如何在nSpec中捕获异常

时间:2014-04-25 00:03:22

标签: nspec

在我的'act'中我想捕获一个异常,以便我可以对异常数据进行多次测试。 Web上的示例显示了如何捕获和比较测试(或“It”块)中的类型/消息,而不是如何将异常捕获为“行为”本身。

我目前只是在'act'体内进行try / catch并将异常存储在上下文中,以便稍后在'It'块中进行测试。在那里,我可以对数据执行许多不同的流畅断言。这是最好的方法吗?

3 个答案:

答案 0 :(得分:2)

实际上,确实有更好的方法:

void describe_some_exceptional_behavior()
{
    context["when throwing an exception"] = () =>
    {
        act = () => throw new InvalidOperationException();

        it["should raise the exception"] = expect<InvalidOperationException>();
    };
}

注意:您将expect的结果直接分配给it。这让我第一次绊倒了。

有关更多示例,请参阅the nspec specs

答案 1 :(得分:0)

我认为除了手动try catch块以存储异常并稍后在it块中检查它之外,目前还没有其他方法可以实现这一点。

答案 2 :(得分:0)

如果您愿意使用开源框架,可以使用Fluent Assertions并执行此操作:

  

动作行为=()=&gt; subject.Foo2(&#34;你好&#34);

     

act.ShouldThrow()        .WithInnerException()        .WithInnerMessage(&#34;无论&#34);