moq
Kpiące właściwości
Szukaj…
Auto stubbing właściwości
Czasami chcesz wyśmiewać klasę lub interfejs, a jego właściwości zachowują się tak, jakby były prostymi modułami pobierającymi i ustawiającymi. Ponieważ jest to powszechny wymóg, Moq zapewnia metodę skrótu do konfiguracji wszystkich właściwości makiety do przechowywania i pobierania wartości:
// 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);
Dla kompletności testowany kod znajduje się poniżej
void SetPropertiesOfUser(IUser user)
{
user.Id = 5;
user.Name = "SomeName";
}
Właściwości z prywatnymi ustawiaczami
Czasami chcesz utworzyć próbną klasę, która ma prywatnego setera:
public class MockTarget
{
public virtual string PropertyToMock { get; private set; }
}
Lub interfejs, który definiuje tylko getter:
public interface MockTarget
{
string PropertyToMock { get; }
}
W obu przypadkach możesz zignorować seter i po prostu skonfigurować getter właściwości, aby zwracał pożądaną wartość:
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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow