SetupSet()已过时。 代替什么?
比方说,我想使用Moq在setter上创build一个callback函数,将set属性存储在我自己的字段中供以后使用。 (举个例子 – 但它到了问题的重点。)我可以做这样的事情:
myMock.SetupSet(x => x.MyProperty).Callback(value => myLocalVariable = value);
这工作得很好。 但是,根据Intellisense,SetupSet已过时。 但是没有说什么应该作为替代。 我知道,moq提供的SetupProperty将自动装载属性与后台字段。 但那不是我要找的。 我想把设定值捕捉到我自己的variables中。 我应该如何使用非过时的方法来做到这一点?
我正在使用Moq版本3.0.204.1和SetupSet
没有标记为过时的我。 但是,在MockLegacyExtensions
中有两个SetupSet
重载。 您可以避免使用这些,并使用在Mock
类上定义的SetupSet
。
差别是微妙的,你需要使用Action<T>
作为SetupSet
参数,而不是Func<T, TProperty>
。
下面的调用将调用非弃用的重载:
myMock.SetupSet(p => p.MyProperty = It.IsAny<string>()).Callback<string>(value => myLocalVariable = value);
诀窍是使用It.IsAny<string>
,它将拦截任何值的setter调用。