Я использую AutoFixture с AutoMoq. Я пытаюсь создать поддельный экземпляр класса, который имеет свойство с геттером, но без сеттера. Я ожидаю, что AutoFixture настроит макет, чтобы он вернул заданное значение, даже если нет настроителя.AutoFixture.AutoMoq: заданное значение только для чтения свойства
Мой код-то вроде этого:
var data = new List<Data>() { new Data() };
var userManager = fixture.Build<IRepository>()
//.With(x => x.Data, data)
.CreateAnonymous();
Mock.Get(userManager).Setup(x => x.Data).Returns(data);
К сожалению, «С» метод не работает в этом случае, так как автоматическое приспособление говорит, что данные не имеют какой-либо сеттер, какой, почему я должен установить значение затем с прямым призывом к макету.
Есть ли способ, которым автоматическое устройство может сделать это самостоятельно, поэтому мне не нужна последняя строка кода?
Редактировать: Я допустил ошибку, пример кода не работает. Это должно быть
var data = new List<Data>() { new Data() };
var userManager = fixture.CreateAnonymous<IRepository>();
Mock.Get(userManager).Setup(x => x.Data).Returns(data)
Тем не менее, было бы хорошо, если бы был метод с поддельным экземпляром.
В некоторых случаях вы можете захотеть «SetupGet» Moq, а не «Setup» (но это не проблема). FWIW Я уверен, что созданный AF материал не имеет отношения к тому, что вы ищете (что, по-видимому, меньше устанавливает состояние и больше может вымываться/подставлять сторону чтения). Можете ли вы подтвердить, что не имеете дело с объектами, у которых есть четкий способ вставить состояние (например, через ctor params?) –
Связанные: http://stackoverflow.com/questions/12963019/how-do-i-get-autofixture -automoq-to-return-results-from-injected-services-in-a –