Я не смог найти способ сделать это, хотя это можно сделать вручную, так почему бы не с помощью moq?
Мокинг виртуальных свойств только для чтения с помощью moq
Ответы (2)
Учитывая этот класс
public abstract class MyAbstraction
{
public virtual string Foo
{
get { return "foo"; }
}
}
вы можете настроить Foo (свойство только для чтения) следующим образом:
var stub = new Mock<MyAbstraction>();
stub.SetupGet(x => x.Foo).Returns("bar");
stub.Object.Foo
теперь будет возвращать bar вместо foo.
person
Mark Seemann
schedule
21.09.2009
отличный ответ спасибо. Другими словами, лучше не иметь свойств только для геттеров, потому что их глумить - заноза в заднице?
- person Alex Gordon; 06.03.2016
вы видите, что у меня есть несколько свойств только для чтения: drive.google.com / file / d / 0ByqKtGmtuLzZNFhwTWhMMGVRZnc /, и я пытаюсь использовать их родительский класс в качестве тестируемой системы, поэтому я не уверен, как настроить moq, поскольку тестируемая система не является имитацией, тогда как я хотите получить значение от этих получателей
- person Alex Gordon; 06.03.2016
@l --''''''--------- '' '' '' '' '' 'Свойство только для получения - это только синтаксический сахар по сравнению с методом, поэтому, если вы возьмете этот оператор до логического завершения можно сказать, что лучше не иметь методов, возвращающих данные. Я с этим совершенно не согласен.
- person Mark Seemann; 06.03.2016
отличный момент. не могли бы вы подсказать, как я могу внедрить эти геттеры в конкретный (не издевательский) класс?
- person Alex Gordon; 06.03.2016
извиняюсь, если я не понимаю, это часть проблемы, мне просто нужен способ выразить / описать это
- person Alex Gordon; 06.03.2016
@l --''''''--------- '' '' '' '' '' '' Это звучит как кандидат на новый вопрос здесь, в Stack Overflow :)
- person Mark Seemann; 06.03.2016
Позвольте нам продолжить это обсуждение в чате.
- person Alex Gordon; 06.03.2016
вот вы где, сэр stackoverflow.com/questions/35827217/
- person Alex Gordon; 06.03.2016
Вы должны убедиться, что недвижимость виртуальная, чтобы это работало.
person
user14403065
schedule
06.10.2020
Отвечая на старый вопрос, на который уже есть принятый ответ, постарайтесь дать ответ, который либо добавляет что-то новое, либо иным образом помогает по отношению к нему. Поскольку ваш текущий ответ прямо сейчас, это больше комментарий, чем ответ. Помимо указания того, что необходимо обеспечить для того, чтобы что-то работало, обычно гораздо полезнее также включать конкретный пример того, как это сделать. См. Также руководство по внесению вкладов для справки.
- person Ivo Mori; 07.10.2020