moq Tutoriel
Démarrer avec moq
Recherche…
Remarques
Moq est une bibliothèque moqueuse pour .Net. Il permet de simuler et de vérifier les interactions avec les dépendances afin de faciliter les tests unitaires.
Vous trouverez les notes de mise à jour pour différentes versions de Moq ici .
Installation ou configuration
- Sélectionnez le projet que vous souhaitez ajouter la référence à Moq.
- Ouvrez Nuget pour ce projet.
- Sélectionnez "Parcourir" que tapez "moq" dans la zone de recherche.
- Sélectionnez "Moq" et cliquez sur Installer.
Suite à ces étapes, le package Moq sera installé et une référence y sera ajoutée dans les références de projet sélectionnées. Après avoir suivi ces étapes, Moq peut être utilisé dans le projet de test unitaire en le déclarant simplement dans les fichiers de classes de test:
Using Moq;
Les Moq sont des doubles de test
Les simulations sont des doubles tests qui permettent de valider les interactions avec les simulations, elles ne sont pas destinées à remplacer le système que vous testez. Des exemples illustreront souvent les caractéristiques de Moq comme suit:
// Create the mock
var mock = new Mock<IMockTarget>();
// Configure the mock to do something
mock.SetupGet(x => x.PropertyToMock).Returns("FixedValue");
// Demonstrate that the configuration works
Assert.AreEqual("FixedValue", mock.Object.PropertyToMock);
// Verify that the mock was invoked
mock.VerifyGet(x => x.PropertyToMock);
Bien que cet exemple montre les étapes impliquées dans l'utilisation du simulacre, il est important de se rappeler qu'il ne teste rien, sauf que le simulacre a été configuré et utilisé correctement. Un test réel utilisant un simulacre fournira la maquette au système à tester. Pour tester la méthode suivante:
public class ClassToTest
{
public string GetPrefixedValue(IMockTarget provider)
{
return "Prefixed:" + provider.PropertyToMock;
}
}
Il est possible de créer une maquette de l'interface dépendante:
public interface IMockTarget
{
string PropertyToMock { get; }
}
Pour créer un test qui valide réellement le comportement de la méthode GetPrefixedValue
:
// Create and configure the mock to return a known value for the property
var mock = new Mock<IMockTarget>();
mock.SetupGet(x => x.PropertyToMock).Returns("FixedValue");
// Create an instance of the class to test
var sut = new ClassToTest();
// Invoke the method to test, supplying the mocked instance
var actualValue = sut.GetPrefixedValue(mock.Object);
// Validate that the calculated value is correct
Assert.AreEqual("Prefixed:FixedValue", actualValue);
// Depending on what your method does, the mock can then be interrogated to
// validate that the property getter was called. In this instance, it's
// unnecessary since we're validating it via the calculated value.
mock.VerifyGet(x => x.PropertyToMock);