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

时间:2016-06-30 11:24:06

标签: c# autofixture nsubstitute

我正在寻找一种模拟方法的方法,以便在多次调用时,结果是不同的。更具体地说,我所追求的是模拟一个方法,以便第三次调用它,我想断言反对那个结果。

此语法正确,但模拟我想要完成的任务:

var foo = Fixture.Freeze<IFoo>();
foo.Exists(Arg.Any<object>()).Returns("firstcall").SecondCall("secondcall").ThirdCall("thirdcall");

你能在AutoFixture中做到这一点吗?

编辑:正如马克所指出的,这是一个与NSubstitute而不是AutoFixture本身有关的问题。我已经更新了标题。

1 个答案:

答案 0 :(得分:4)

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

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

现在,当Exists()被调用三次时,响应将为"firstcall",然后是"secondcall",然后是"thirdcall"。之后的任何通话都将收到"default"