我试图断言抛出异常。这是一段重现问题的代码:
$('.select').on('select2:selecting select2:unselecting', function(e) {
var value = e.params.args.data.id;
});
该错误表示抛出了System.Exception,但测试应该通过,因为这就是我所断言的。有人可以帮我解决我的错误。
答案 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。没有找到任何可以解释这一点的内容。