2016-06-30 53 views
1

我正在寻找一种方法来模拟一种方法,以便多次调用时结果不同。更具体地说,我追求的是嘲笑一种方法,以便第三次调用时,我想对这个结果断言。如何模拟一系列调用相同的方法来使用NSubstitute在AutoFixture中返回不同的值?

这句法是正确的,但模拟I想要完成的任务:

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

你能在AutoFixture做到这一点?

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

回答

2

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

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

现在,当Exists()被调用了三次,则回应将"firstcall"然后"secondcall"然后"thirdcall"。此后的任何电话将收到"default"

+0

AFAICT,这是您正在使用的底层动态模拟库(NSubstitute?)的一个功能,并且与AutoFixture无关。 –

+0

@MarkSeemann啊是的,这是真的,谢谢。将更新答案。 –

相关问题