moq
Издевательские свойства
Поиск…
Свойства автоматической штамповки
Иногда вы хотите издеваться над классом или интерфейсом и вести себя так, как если бы они были простыми геттерами и сеттерами. Поскольку это общее требование, Moq предоставляет метод коротких вырезок для настройки всех свойств макета для хранения и извлечения значений:
// 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);
Для полноты проверяемый код ниже
void SetPropertiesOfUser(IUser user)
{
user.Id = 5;
user.Name = "SomeName";
}
Недвижимость с частными сеттерами
Иногда вы хотите создать макет класса, у которого есть собственный сеттер:
public class MockTarget
{
public virtual string PropertyToMock { get; private set; }
}
Или интерфейс, который определяет только геттер:
public interface MockTarget
{
string PropertyToMock { get; }
}
В обоих случаях вы можете игнорировать установщик и просто установить свойство getter, чтобы вернуть желаемое значение:
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
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow