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