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

时间:2016-08-12 21:56:18

标签: c# unit-testing mocking nsubstitute

使用NSubstitute,我可以这样做:

new

但是对于大型测试夹具,这在每次测试中都是不合适的。

我也可以撤消" mock.doStuff().Returns(foo); 替换,还是我必须在每次测试前重新创建模拟? (这是懒散的...)

1 个答案:

答案 0 :(得分:2)

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

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