我正在尝试检查我的函数是否返回Some(x)

testedFunc() |> should be (sameAs Some)
testedFunc() |> should be Some
testedFunc() |> should equal Some

都行不通。我宁愿不使用:
match testedFunc() with
    | Some -> Pass()
    | None -> Fail()

有人知道这样做的方法吗?

最佳答案

我还没有真正使用过FsUnit,但是类似的东西应该可以工作...

testedFunc() |> Option.isSome |> should equal true

或者因为Option已经具有IsSome属性,您可以执行此操作,但要注意大小写-它与Option.isSome函数不同。
testedFunc().IsSome |> should equal true

第三种方法是将您正在测试的函数与Option.isSome组合在一起,以获得直接返回布尔值的函数。在此示例中,它并不是很有用,但是如果您需要使用各种输入多次测试Option-returning函数,则此方法可以帮助减少重复的代码。
let testedFunc = testedFunc >> Option.isSome
testedFunc() |> should equal true

09-30 15:26