[英]construct sequence of calls to void method with thrown exceptions in NSubstitute
我有一個模擬的界面
public interface IFoo {
void Bar(IEnumerable<int>);
}
我的被測試代碼依次調用Bar()幾次。 我想定義我的單元測試,以便Bar在第二次(或第N次)調用時引發異常。 有一種簡潔的方法嗎? 我找到了非無效方法的示例: http : //nsubstitute.github.io/help/multiple-returns/
無效呼叫的回調
Returns()
可用於獲取返回值的成員的回調,但是對於void
成員,我們需要另一種技術,因為我們不能在void
return上調用方法。 對於這些情況,我們可以使用When..Do
語法。回調構建器,用於更復雜的回調
使用“
Callback
構建器,我們可以創建更復雜的Do()
方案。 我們可以使用Callback.First()
繼之以Then()
,ThenThrow()
和ThenKeepDoing()
來構建回調鏈。 我們還可以使用Always()
和AlwaysThrow()
來指定每次調用的回調。 請注意,即使其他回調將引發異常,也會調用Always()
方法設置的回調。
因此,對於您的方案,您可以設置類似
var foo = Substitute.For<IFoo>();
foo
.When(_ => _.Bar(Arg.Any<IEnumerable<int>>()))
.Do(Callback
.First(_ => _)//First time do nothing
.ThenThrow(new Exception()) //second time throw the provided exception
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.