2
我有一個控制器方法,如果通過ID列表循環未找到指定的ID,則會引發自定義異常,否則返回部分視圖。Moq - 測試控制器方法拋出異常
我已經完成了測試,看看它是否成功地返回了部分視圖,但是如何測試該方法失敗並引發了自定義異常?
我有一個控制器方法,如果通過ID列表循環未找到指定的ID,則會引發自定義異常,否則返回部分視圖。Moq - 測試控制器方法拋出異常
我已經完成了測試,看看它是否成功地返回了部分視圖,但是如何測試該方法失敗並引發了自定義異常?
你可以做一個簡單的try/catch並執行Assert.Fail如果你不會捕獲預期的異常。但是,大多數單元測試框架提供了一種自動測試異常的方法。
微軟的MSTest的具有ExpectedException
屬性,它可以應用到測試方法:
[ExpectedException(typeof(ArgumentNullException))]
[TestMethod]
public void DoSomething()
{ ... }
如果上面的測試方法確實不拋出一個ArgumentNullException,MSTest的將標誌着試驗的失敗。
NUnit具有更細化的Assert.Throws
,它使您能夠更準確地控制測試方法中預期發生異常的位置。
在MS Test中我不能Assert.Throws()總是令我惱火。我的解決方案是編寫一個ExtendedAssert庫,它爲異常類型提供一個通用參數。 –
非常感謝Patrick。 –