[C#.NET] 使用 Fluent Assertions 验证例外

[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();

另一个是教给 Action 委派

Action action = () => calculation.GetValue(null);
action.ShouldThrow();

两种方式都一样,就看你喜欢哪一种,个人则是偏好使用 Action,上述的程序相当的好懂,SholdThrow 解读为应该抛出 InvalidOperationException 例外

只验证例外类型可能还不太够,WithMessage 就是用来验证例外所包含的消息


在开发阶段例外消息可能会不断的的调整,我们可以选择 Where 只验证关键字,好强大阿居然能支持 LINQ


* 符号居然也能这样用,把你的关键字前后包起来,就可以达到 Contains 的效果

action.ShouldThrow().WithMessage("invalid*");

连 InnerException 都能验证,WithMessage 可省略不写


Fluent Assertions 验证例外的写法真是简单直觉阿

完整程序:https://dotblogsamples.codeplex.com/SourceControl/latest#Simple.UseFluentAssertions/UnitTestProject1/ExceptionUnitTest.cs

参考文章: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/

若有谬误,烦请告知,新手发帖请多包涵

2010~2017 C# 第四季