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.

Nuget Packages:

  • NUnit
  • NUnit3TestAdapter
  • Microsoft.NET.Test.Sdk

Moq

Nuget Package: 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.1515966865.txt.gz · Dernière modification : 2022/02/02 00:43 (modification externe)