在FUnUnit F#中为XUnit断言异常

时间:2017-01-12 20:59:40

标签: f# fsunit

我试图断言抛出异常。这是一段重现问题的代码:

  $('.select').on('select2:selecting select2:unselecting', function(e) {

      var value = e.params.args.data.id;

  });

该错误表示抛出了System.Exception,但测试应该通过,因为这就是我所断言的。有人可以帮我解决我的错误。

2 个答案:

答案 0 :(得分:3)

您正在调用testException函数,然后将其结果作为参数传递给should函数。在运行时,testException崩溃,因此永远不会返回结果,因此永远不会调用should函数。

如果希望should函数捕获并正确报告异常,则需要将testException函数本身传递给它,而不是其结果(因为首先没有结果)。这样,should函数将能够在testException块中调用try..with,从而捕获异常。

testException |> should throw typeof<System.Exception>

答案 1 :(得分:0)

这似乎可以解决问题:

[<Fact>]
let ``should assert throw correctly``() =
    (fun () -> Exception() |> raise |> ignore)
        |> should throw typeof<System.Exception>

不确定为什么需要忽略 tbh。没有找到任何可以解释这一点的内容。