Démarrer avec moq

Installation ou configuration

  1. Sélectionnez le projet dont vous souhaitez ajouter la référence à Moq.
  2. Ouvrez Nuget pour ce projet.
  3. Sélectionnez “Parcourir” puis tapez “moq” dans le champ de recherche.
  4. Sélectionnez “Moq” puis cliquez sur Installer.

[![entrez la description de l’image ici][1]][1]

Suivre ces étapes installera le package Moq et y ajoutera une référence dans les références de projet sélectionnées. Après avoir terminé 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;

[1] : http://i.stack.imgur.com/0zQUA.jpg

Les Moqs sont des doublons de test

Les simulations sont conçues comme des doubles de test, qui permettent de valider les interactions avec les simulations, elles ne sont pas destinées à remplacer le système que vous testez. Les exemples démontreront souvent les fonctionnalités 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 de la simulation, il est important de se rappeler qu’il ne teste rien, à part le fait que la simulation a été configurée et utilisée correctement. Un test réel qui utilise une simulation fournira la simulation au système qui doit être testé. Pour tester la méthode suivante :

public class ClassToTest
{
    public string GetPrefixedValue(IMockTarget provider)
    {
        return "Prefixed:" + provider.PropertyToMock;
    }
}

Il est possible de créer un mock 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);