Ich versuche, FsUnit (unter der Haube, die es NUnit verwendet) zu verwenden, um meine F # -Code zu testen, aber es hat Probleme mit generischen diskriminierten Gewerkschaften. Ich verstehe, warum es passiert, aber ich versuche einen Weg zu finden, Tests zu schreiben, ohne meine erwarteten Werte zu kommentieren. Irgendein Rat? Gibt es dafür vielleicht besser geeignete Frameworks?Verwenden von NUnit mit generischen diskriminierten Verbindungen
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 :(
Nizza sein, Ihre Lösung ist eigentlich viel einfacher als das, was ich gefunden habe (Wechsel zu Unquote). Ich werde es als akzeptiert markieren, obwohl ich bei Unquote bleiben werde, da es eine coole Bibliothek ist, die ich in meinem Spielzeugprojekt verwenden kann :) – DevNewb