Ошибка на примере 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)