FsUnit示例出错

时间:2012-06-05 17:55:28

标签: f# fsunit

我从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'类型不兼容

我做错了什么?

2 个答案:

答案 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)