[英]Asserting exception in FsUnit F# for XUnit
我试图断言抛出了异常。 这是一段重现问题的精简代码:
open FsUnit
open Xunit
let testException () =
raise <| Exception()
[<Fact>]
let ``should assert throw correctly``() =
(testException ())
|> should throw typeof<System.Exception>
错误表明 System.Exception 被抛出,但测试应该通过,因为这就是我所断言的。 有人可以帮忙解决我哪里出错了。
您正在调用testException
函数,然后将其结果作为参数传递给should
函数。 在运行时, testException
崩溃,因此永远不会返回结果,因此永远不会调用should
函数。
如果您希望should
函数捕获并正确报告异常,则需要将testException
函数本身传递给它,而不是它的结果(因为首先没有结果)。 这样, should
函数将能够在try..with
块中调用testException
,从而捕获异常。
testException |> should throw typeof<System.Exception>
这似乎可以解决问题:
[<Fact>]
let ``should assert throw correctly``() =
(fun () -> Exception() |> raise |> ignore)
|> should throw typeof<System.Exception>
不太确定为什么需要忽略 tbh。 没有找到任何东西来解释这一点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.