如何模拟调用同一方法的序列,以返回不同的值在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本身。我已经更新了标题

如何模拟调用同一方法的序列,以返回不同的值在AutoFixture中使用NSubstitute

我在提交问题之前找到了答案,所以我将在这里发布答案:

Fixture.Freeze<IFoo>()
    .Exists(Arg.Any<object>())
    .Returns("default", "firstcall", "secondcall", "thirdcall");

现在,当Exists()被调用三次时,响应将是"firstcall"然后"secondcall"然后"thirdcall"。在此之后的任何呼叫都将接收"default"