Recherche…


Propriétés de stubbing automatique

Parfois, vous voulez simuler une classe ou une interface et faire en sorte que ses propriétés se comportent comme si elles étaient de simples getters et setters. Comme il s'agit d'une exigence courante, Moq fournit une méthode de raccourci pour configurer toutes les propriétés d'un modèle afin de stocker et de récupérer des valeurs:

// SetupAllProperties tells mock to implement setter/getter funcationality
var userMock = new Mock<IUser>().SetupAllProperties();

// Invoke the code to test
SetPropertiesOfUser(userMock.Object);

// Validate properties have been set
Assert.AreEqual(5, userMock.Object.Id);
Assert.AreEqual("SomeName", userMock.Object.Name);

Pour être complet, le code testé est ci-dessous

void SetPropertiesOfUser(IUser user)
{
    user.Id = 5;
    user.Name = "SomeName";
}

Propriétés avec des particuliers

Parfois, vous voulez créer une maquette d'une classe avec un setter privé:

public class MockTarget
{
    public virtual string PropertyToMock { get; private set; }
}

Ou une interface qui définit uniquement un getter:

public interface MockTarget
{
    string PropertyToMock { get; }
}

Dans les deux cas, vous pouvez ignorer le setter et simplement configurer le getter de propriété pour renvoyer une valeur souhaitée:

var mock = new Mock<MockTarget>();
mock.SetupGet(x => x.PropertyToMock).Returns("ExpectedValue");

Assert.AreEqual("ExpectedValue", mock.Object.PropertyToMock);


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow