我正在寻找一种模拟方法的方法,以便在多次调用时,结果是不同的。更具体地说,我所追求的是模拟一个方法,以便第三次调用它,我想断言反对那个结果。
此语法不正确,但模拟我想要完成的任务:
var foo = Fixture.Freeze<IFoo>();
foo.Exists(Arg.Any<object>()).Returns("firstcall").SecondCall("secondcall").ThirdCall("thirdcall");
你能在AutoFixture中做到这一点吗?
编辑:正如马克所指出的,这是一个与NSubstitute而不是AutoFixture本身有关的问题。我已经更新了标题。答案 0 :(得分:4)
我在提交问题之前找到了答案,所以我会在这里发布答案:
Fixture.Freeze<IFoo>()
.Exists(Arg.Any<object>())
.Returns("default", "firstcall", "secondcall", "thirdcall");
现在,当Exists()
被调用三次时,响应将为"firstcall"
,然后是"secondcall"
,然后是"thirdcall"
。之后的任何通话都将收到"default"
。