Ошибка на примере FsUnit

Я скопировал этот пример со страницы проекта FsUnit:

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

F# дает мне следующую ошибку:

Ошибка 2 Ожидается, что это выражение будет иметь тип bool, но здесь имеет тип Constraints.EqualConstraint

Ошибка 1 Тип 'bool' не совместим с типом 'Constraints.Constraint'

Что я делаю неправильно?

2 ответа

Решение

Более новая версия FsUnit включает изменение, которое переименовывает FsUnit.not функция к FsUnit.not', Это должно устранить конфликт со встроенным not функция. Вы можете получить последнюю версию из галереи NuGet. Примеры использования можно найти на сайте FsUnit GitHub.

Дайте мне знать, если вы все еще видите проблему. Я буду рад провести с вами еще несколько углубленных поисков неисправностей.

Я думаю, что что-то не так с тем, как вы ссылаетесь FsUnit, Я пытался запустить ваш код (просто скопируйте FsUnit исходный код от CodePlex), и он работал нормально. Вам все еще нужно написать свой тест как функцию (как указал Джоэл), так что напишите что-то вроде let [<Test>] trivial () = ...,

По какой-то причине, я думаю, что ваш скрипт использует встроенный not функция (которая работает на bool значения) вместо FsUnit.not функция, которая работает на Constraint объекты. Это работает, если вы используете not функция от FsUnit явно?

let cnot = FsUnit.not
let [<Test>] trivial = 1 |> should cnot (equal 1) 
Другие вопросы по тегам