我可以在不重新创建模拟的情况下撤消 NSubstitute 的 Returns() 替换吗?

Can I undo NSubstitute's Returns() substitution without recreating the mock?

使用 NSubstitute,我可以这样做:

mock.doStuff().Returns(foo);

但是对于大型测试夹具,这并不适用于每个测试。

那么我可以 "undo" 那个 Returns() 替换,还是我必须在每次测试之前重新创建模拟? (太懒了……)

最简单的方法是覆盖存根值 -- 最后一组将被使用。

mock.doStuff().Returns(foo);
...
mock.doStuff().Returns(anotherFoo);

您还可以使用 ClearExtensions:

对替换部分的重置进行精细控制
using NSubstitute.ClearExtensions;
...
mock.ClearSubstitute(ClearOptions.ReturnValues);

ClearExtensions 在 2.0.0 候选发布版(及更高版本)中可用,因此您可能需要启用 prerelease packages in NuGet to get that feature.