如何使用 NSubstitute 模拟对 AutoFixture 中 return 不同值的同一方法的一系列调用?
How to mock a sequence of calls to the same method to return different values in AutoFixture using NSubstitute?
我正在寻找一种模拟方法的方法,以便在多次调用时得到不同的结果。更具体地说,我所追求的是模拟一个方法,以便第三次调用它时,我想断言该结果。
此语法不正确,但模拟了我想要完成的事情:
var foo = Fixture.Freeze<IFoo>();
foo.Exists(Arg.Any<object>()).Returns("firstcall").SecondCall("secondcall").ThirdCall("thirdcall");
你能在 AutoFixture 中做到这一点吗?
编辑:正如 Mark 所指出的,这是一个与 NSubstitute 有关的问题,而不是 AutoFixture 本身。我更新了标题。
我在提交问题之前找到了答案,所以我会post这里的答案:
Fixture.Freeze<IFoo>()
.Exists(Arg.Any<object>())
.Returns("default", "firstcall", "secondcall", "thirdcall");
现在当 Exists()
被调用三次时,响应将是 "firstcall"
然后 "secondcall"
然后 "thirdcall"
。此后的任何调用都会收到 "default"
.
我正在寻找一种模拟方法的方法,以便在多次调用时得到不同的结果。更具体地说,我所追求的是模拟一个方法,以便第三次调用它时,我想断言该结果。
此语法不正确,但模拟了我想要完成的事情:
var foo = Fixture.Freeze<IFoo>();
foo.Exists(Arg.Any<object>()).Returns("firstcall").SecondCall("secondcall").ThirdCall("thirdcall");
你能在 AutoFixture 中做到这一点吗?
编辑:正如 Mark 所指出的,这是一个与 NSubstitute 有关的问题,而不是 AutoFixture 本身。我更新了标题。
我在提交问题之前找到了答案,所以我会post这里的答案:
Fixture.Freeze<IFoo>()
.Exists(Arg.Any<object>())
.Returns("default", "firstcall", "secondcall", "thirdcall");
现在当 Exists()
被调用三次时,响应将是 "firstcall"
然后 "secondcall"
然后 "thirdcall"
。此后的任何调用都会收到 "default"
.