簡體   English   中英

在NSubstitute中構造對具有拋出異常的void方法的調用序列

[英]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
    );

參考回調,無效調用和When..Do

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM