[C#.NET] 使用 Fluent Assertions 驗証例外
這次我想要使用 Fluent Assertions 來處理例外訊息
被測端的程式碼長如下
{ public int GetValue(object source) { var e = new FormatException("format error"); var e1 = new InvalidOperationException("invalid operation", e); throw e1; } }
驗証例外有兩種寫法
一個是Invoking擴充方法
calculation.Invoking(p => p.GetValue(null)) .ShouldThrow<InvalidOperationException>();
另一個是教給 Action 委派
Action action = () => calculation.GetValue(null); action.ShouldThrow<InvalidOperationException>();
兩種方式都一樣,就看你喜歡哪一種,個人則是偏好使用 Action,上述的程式碼相當的好懂,SholdThrow 解讀為應該拋出 InvalidOperationException 例外
只驗証例外型別可能還不太夠,WithMessage 就是用來驗証例外所包含的訊息
在開發階段例外訊息可能會不斷的的調整,我們可以選擇 Where 只驗証關鍵字,好強大阿居然能支援 LINQ
* 符號居然也能這樣用,把你的關鍵字前後包起來,就可以達到 Contains 的效果
action.ShouldThrow<InvalidOperationException>().WithMessage("invalid*");
連 InnerException 都能驗証,WithMessage 可省略不寫
Fluent Assertions 驗証例外的寫法真是簡單直覺阿
參考文章:https://github.com/dennisdoomen/fluentassertions/wiki
文章出自:http://www.dotblogs.com.tw/yc421206/archive/2015/07/04/151729.aspx
專案位置:https://dotblogsamples.codeplex.com/SourceControl/latest#Simple.UseFluentAssertions/
若有謬誤,煩請告知,新手發帖請多包涵
Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET