Поиск…


Свойства автоматической штамповки

Иногда вы хотите издеваться над классом или интерфейсом и вести себя так, как если бы они были простыми геттерами и сеттерами. Поскольку это общее требование, 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