我正在寻找一种模拟方法的方法,以便多次调用时结果不同。更具体地说,我想要的是模拟一个方法,以便第三次调用它时,我想针对该结果进行断言。
此语法不正确,但模拟了我想要完成的任务:
var foo = Fixture.Freeze<IFoo>();
foo.Exists(Arg.Any<object>()).Returns("firstcall").SecondCall("secondcall").ThirdCall("thirdcall");
你能在 AutoFixture 中做到这一点吗?
编辑:正如 Mark 所指出的,这是一个与 NSubstitute 而不是 AutoFixture 本身相关的问题。我已经更新了标题。
最佳答案
我在提交问题之前就找到了答案,所以我将答案发布在这里:
Fixture.Freeze<IFoo>()
.Exists(Arg.Any<object>())
.Returns("default", "firstcall", "secondcall", "thirdcall");
现在,当 Exists()
被调用三次时,响应将是 "firstcall"
then "secondcall"
then "第三次调用”
。此后的任何调用都将收到“default”
。
关于c# - 如何使用 NSubstitute 模拟对同一方法的一系列调用以返回 AutoFixture 中的不同值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38121703/