3

我从 FsUnit项目页面复制了这个示例:

open NUnit.Framework
open FsUnit
let [<Test>] trivial () = 1 |> should not (equal 2)

F# 给我以下错误:

错误 2 此表达式应为 bool 类型,但此处为 Constraints.EqualConstraint

错误 1 ​​'bool' 类型与 'Constraints.Constraint' 类型不兼容

我究竟做错了什么?

4

2 回答 2

6

较新版本的 FsUnit 包含将FsUnit.not函数重命名为FsUnit.not'. 这应该消除与内置not函数的冲突。您可以从NuGet Gallery获取最新版本。可以在 FsUnit GitHub 站点上找到使用示例。

如果您仍然看到问题,请告诉我。我很乐意与您一起进行更深入的故障排除。

于 2012-06-05T21:12:23.180 回答
2

我认为您引用的方式有问题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) 
于 2012-06-05T20:49:05.717 回答