Мне приходится работать с классом, который имеет неизвестные зависимости и, возможно, пахнет другим кодом.
Я не могу внести изменения в этот класс и использовать его во множестве других проектов, к которым я не хочу прикасаться.
Я создал фабрику, которая создает этот объект и устанавливает свойства.
Я хочу модульные тесты для этой фабрики, и так как для этого объекта неизвестна зависимость, я создаю макет с помощью MOQ.
У меня проблема в том, что я не могу установить свойства для объекта MOQ. Я хочу, чтобы он был установлен на заводе НЕ с помощью
mock.Setup(x => x.FirstName).Returns(firstName);
Так вот мой демонстрационный код и тесты
[TestCase("John")]
[TestCase("Paul")]
[TestCase("George")]
[TestCase("Ringo")]
public void Create(string firstName)
{
//arrange
var mock = new Mock<IPerson>();
//act
var actual = PersonFactory.Create(mock.Object, firstName);
//assert
Assert.AreEqual(firstName, actual.FirstName);
}
Завод выглядит так
public static class PersonFactory
{
public static IPerson Create(IPerson person, string firstName)
{
person.FirstName = firstName;
return person;
}
}
Я попробовал это с NSubsitute и все заработало нормально. Я подозреваю, что где-то нужен объект.