如何模拟调用同一方法的序列,以返回不同的值在AutoFixture中使用NSubstitute
本文关键字:返回 NSubstitute AutoFixture 模拟 何模拟 调用 方法 | 更新日期: 2023-09-27 17:53:16
我正在寻找一种模拟方法的方法,以便在多次调用时,结果是不同的。更具体地说,我所追求的是模拟一个方法,以便第三次调用它时,我想对该结果进行断言。
这个语法不是正确,但是模拟了我想要完成的:
var foo = Fixture.Freeze<IFoo>();
foo.Exists(Arg.Any<object>()).Returns("firstcall").SecondCall("secondcall").ThirdCall("thirdcall");
你可以在AutoFixture中这样做吗?
编辑:正如马克指出的,这是一个与NSubstitute相关的问题,而不是AutoFixture本身。我已经更新了标题
我在提交问题之前找到了答案,所以我将在这里发布答案:
Fixture.Freeze<IFoo>()
.Exists(Arg.Any<object>())
.Returns("default", "firstcall", "secondcall", "thirdcall");
现在,当Exists()
被调用三次时,响应将是"firstcall"
然后"secondcall"
然后"thirdcall"
。在此之后的任何呼叫都将接收"default"
。