Outils pour utilisateurs

Outils du site


developpement:dotnet:moq:toc

Ceci est une ancienne révision du document !


NUnit

Pour une utilisation en .NET Core 2.x de NUNit, voir cette documentation.

Moq

Un Test Double est un terme générique pour désigner un élément de production dans l'objectif de tester1)

Il y a cinq types de test double : Fakes, Dummies, Stubs, Mocks et Spies. Voir Dummy, Fake, Stub, Mock et Spy, les tests unitaires avec l’aide de Moq pour plus de détails.

using Moq;
 
Mock<IFrequentFlyerNumberValidator> mockValidator = new Mock<IFrequentFlyerNumberValidator>();

Utilisation:

var sut = new CreditCardApplication(mockValidator.Object);

Setup des méthodes mockées

On peut spécifier ce qu'une méthode peut accepter, et ce qu'elle doit retourner:

mockValidator.Setup(x => x.IsValid("x")).Returns(true);

ou bien

mockValidator.Setup(x => x.IsValid(It.IsAny<string>())).Returns(true);

Un autre exemple, la méthode retournera true si l'argument de IsValid() commence par x:

mockValidator.Setup(x => x.IsValid(It.Is<string>(number => number.StartsWith("x")))).Returns(true);
mockValidator.Setup(x => x.IsValid(It.IsIn("x", "y", "z"))).Returns(true);
mockValidator.Setup(x => x.IsValid(It.IsInRange("b", "z", Range.Inclusive))).Returns(true);

Out parameter

bool isValid = true;
mockValidator.Setup(x => x.IsValid(It.IsAny<string>(), out isValid));

Mocker les propriétés

mockValidator.Setup(x => x.LicenseKey).Returns("EXPIRED");

Par une fonction

mockValidator.Setup(x => x.LicenseKey).Returns(GetLicenseKeyExpiryString);
string GetLicenseKeyExpiryString()
{
    return "EXPIRED";
}

MockBehavior

Il y a deux modes de MockBehavior : Strict et Loose :

  • Strict: Lance une exception si une méthode a été appelée, mais qu'elle n'a pas de Setup().
  • Loose: Mode par défaut, ne lancera pas d'exceptions si une méthode est appelée et qu'elle n'a pas de Setup().
  • Default: C'est le mode par défaut, ce qui est équivalent à MockBehavior.Loose.

On suggère d'utiliser des mocks stricts seulement quand c'est nécessaire et préférer des mocks loose dans les autres cas.

FluentAssertions

Nuget Package : FluentAssertions.

Exemple:

decision.Should().Be(CreditCardApplicationDecision.AutoAccepted);
developpement/dotnet/moq/toc.1515966634.txt.gz · Dernière modification : 2022/02/02 00:43 (modification externe)