繁体   English   中英

在 FsUnit F# 中为 XUnit 断言异常

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM