2016-06-30 46 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啊是的,這是真的,謝謝。將更新答案。 –

相關問題