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 ギャラリーから最新バージョンを入手できます。使用例は、FsUnit GitHub サイトにあります。

問題が解決しない場合はお知らせください。より詳細なトラブルシューティングをお手伝いさせていただきます。

于 2012-06-05T21:12:23.180 に答える
2

参照方法に問題があると思いますFsUnit。私はあなたのコードを実行しようとしました(CodePlexからソースコードをコピーするだけですFsUnit)、そしてそれはうまくいきました。(Joelが指摘したように)関数としてテストを作成する必要があるので、のようなものを作成しますlet [<Test>] trivial () = ...

何らかの理由で、スクリプトはオブジェクトを操作する関数ではなく、組み込みnot関数(値を操作する)を使用していると思います。から関数を明示的に使用すると機能しますか?boolFsUnit.notConstraintnotFsUnit

let cnot = FsUnit.not
let [<Test>] trivial = 1 |> should cnot (equal 1) 
于 2012-06-05T20:49:05.717 に答える