Я пытаюсь использовать FsUnit (под капотом он использует NUnit) для проверки моего кода F #, но у него возникают проблемы с обработкой общих размеченных объединений. Я понимаю, почему это происходит, но я пытаюсь найти способ писать тесты без аннотирования ожидаемых значений. Любой совет? Может быть, для этого лучше подходят фреймворки?
type OptionWithReason<'a> =
| Some of 'a
| None of string
let reason = "division by 0 is not yet supported"
let safeDivide x y =
if y = 0 then
None reason
else
Some(x/y)
let result = safeDivide 1 0
let expected = None reason
let expectedExplicit: int OptionWithReason = None reason
let test1 = result = expected //true
let test2 = result = expectedExplicit //true
NUnit.Framework.Assert.AreEqual(expectedExplicit,result) //pass
NUnit.Framework.Assert.AreEqual(expected,result) //fail :(