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调用。