moq
Verspottungseigenschaften
Suche…
Auto-Stubbing-Eigenschaften
Manchmal möchten Sie eine Klasse oder ein Interface nachahmen, und ihre Eigenschaften verhalten sich wie einfache Getter und Setter. Da dies eine häufige Anforderung ist, bietet Moq eine Abkürzungsmethode zum Einrichten aller Eigenschaften eines Modells zum Speichern und Abrufen von Werten:
// 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);
Der Vollständigkeit halber wird der getestete Code unten angegeben
void SetPropertiesOfUser(IUser user)
{
user.Id = 5;
user.Name = "SomeName";
}
Eigenschaften mit privaten Setters
Manchmal möchten Sie ein Modell einer Klasse erstellen, die über einen privaten Setzer verfügt:
public class MockTarget
{
public virtual string PropertyToMock { get; private set; }
}
Oder eine Schnittstelle, die nur einen Getter definiert:
public interface MockTarget
{
string PropertyToMock { get; }
}
In beiden Fällen können Sie den Setter ignorieren und einfach den Eigenschaften-Getter einrichten, um einen gewünschten Wert zurückzugeben:
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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow