用FsUnit断言一些

时间:2012-04-09 17:54:01

标签: f# fsunit

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

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

一切都行不通。我宁愿不使用:

match testedFunc() with
    | Some -> Pass()
    | None -> Fail()

任何人都知道这样做的方法吗?

1 个答案:

答案 0 :(得分:4)

我还没有真正使用过FsUnit,但这样的事情应该有用......

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

或者因为Option已经有一个IsSome属性,你可以这样做,但要注意大小写 - 它与Option.isSome函数不同。

testedFunc().IsSome |> should be true

第三种方法是将您正在测试的函数与Option.isSome组合在一起,以获得直接返回布尔值的函数。这在这个例子中没那么有用,但是如果你需要使用各种输入多次测试Option-returns函数,这种方法可以帮助减少重复的代码。

let testedFunc = testedFunc >> Option.isSome
testedFunc() |> should be true