我从 FsUnit项目页面复制了这个示例:
open NUnit.Framework
open FsUnit
let [<Test>] trivial () = 1 |> should not (equal 2)
F# 给我以下错误:
错误 2 此表达式应为 bool 类型,但此处为 Constraints.EqualConstraint
错误 1 'bool' 类型与 'Constraints.Constraint' 类型不兼容
我究竟做错了什么?
较新版本的 FsUnit 包含将FsUnit.not
函数重命名为FsUnit.not'
. 这应该消除与内置not
函数的冲突。您可以从NuGet Gallery获取最新版本。可以在 FsUnit GitHub 站点上找到使用示例。
如果您仍然看到问题,请告诉我。我很乐意与您一起进行更深入的故障排除。
我认为您引用的方式有问题FsUnit
。我尝试运行您的代码(只需FsUnit
从 CodePlex 复制源代码),它运行良好。您仍然需要将测试编写为函数(正如 Joel 所指出的那样),因此请编写类似let [<Test>] trivial () = ...
.
出于某种原因,我认为您的脚本使用的是内置not
函数(对bool
值进行操作)而不是对对象FsUnit.not
进行操作的函数。如果您明确Constraint
使用该not
功能,它是否有效?FsUnit
let cnot = FsUnit.not
let [<Test>] trivial = 1 |> should cnot (equal 1)