2021年10月9日 星期六

單元測試 - 針對例外錯誤

對於系統可能發生例外的地方,一定都會採取必要措施,並且拋出美化後的訊息給用戶,如何

驗收我們要的「例外」,肯定是需要寫個測試來玩玩,這邊使用 NUnit 搭配 FluentAssertions

使用之前文章(例外錯誤攔截)來當作例外發生案例

MyService 類別



測試案例 exception_myCustException_by_myService


由上圖可知,使用 Action 變數來指定 target,並且驗證發生的例外為 MyCustExption


跑測試通過


若要進一步驗證回傳的訊息,可以如下操作,除了取得 MyCustException 之外,

使用 WithMessage方法,來驗收錯誤訊息是否符合期望


跑測試路燈


有時候錯誤訊息僅需要驗證是否有包含哪些字,可以使用「*」字元,而「*」代表這個位置有或

沒有其他字元,所以可以如下撰寫



跑測試綠燈


以上測試,另有一個寫法,使用 FluentActions的 Invoking() 方法,如下圖



若是非同步同樣適用,先在 MyService class 加入非同步方法


此時加入測試案例,如下圖

其中 act 使用 Func<Task> 來對接,並且後續使用 ThrowAsync 方法來判斷



參考

沒有留言:

張貼留言