[英]Can I use Moq's SetupSequence to throw exception then return void?
我試圖設置 Moq 在第一次調用時拋出異常,然后在第二次調用時返回 void。 我嘲笑的方法有一個void
返回類型(例如public void Bar()
)。
我嘗試過的事情
這有編譯錯誤,因為Returns
需要一個參數,而SetupSequence
需要類型參數。
_mock.SetupSequence(m => m.Bar())
.Throws<Exception>()
.Returns();
這有一個編譯錯誤,因為Void
不是 C# 中的類型。
_mock.SetupSequence<IMyMock, Void>(m => m.Bar())
.Throws<Exception>() // first invocation throws exception
.CallBase();
解決方法
最后我放棄了SetupSequence()
並切換到Callback()
拋出異常。
var firstTime = true;
_mock.Setup(m => m.Bar())
.Callback(() =>
{
if (firstTime)
{
firstTime = false;
throw new Exception();
}
});
問題
SetupSequence
采用Func
,而不是Action
。 我是否正確假設這意味着SetupSequence()
不能用於模擬 void 方法?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.