SetupSet() устарел. Вместо чего?
Скажем, я хочу использовать Moq для создания обратного вызова для сеттера для хранения свойства set в моем собственном поле для последующего использования. (Продуманный пример - но он доходит до сути вопроса.) Я мог бы сделать что-то вроде этого:
myMock.SetupSet(x => x.MyProperty).Callback(value => myLocalVariable = value);
И это работает отлично. Однако SetupSet устарел в соответствии с Intellisense. Но он не говорит, что следует использовать в качестве альтернативы. Я знаю, что moq предоставляет SetupProperty, который будет авторизовать свойство с помощью поля поддержки. Но это не то, что я ищу. Я хочу зафиксировать заданное значение в моей переменной. Как это сделать с использованием устаревших методов?
Ответы
Ответ 1
Я использую версию Moq 3.0.204.1, а SetupSet
для этого не является устаревшим. Однако существует пара перегрузок SetupSet
, расположенных в MockLegacyExtensions
. Вы можете не использовать их и использовать SetupSet
, который определен в классе Mock
.
Разница тонкая, и вам нужно использовать Action<T>
как SetupSet
, а не Func<T, TProperty>
.
В приведенном ниже вызове вызывается не-устаревшая перегрузка:
myMock.SetupSet(p => p.MyProperty = It.IsAny<string>()).Callback<string>(value => myLocalVariable = value);
Трюк заключается в использовании It.IsAny<string>
, который перехватит вызов сеттера любым значением.