2012-04-09 12 views
3

ich zu überprüfen, ich versuche, dass meine Funktion Some(x)Behaupten Einige mit FsUnit

testedFunc() |> should be (sameAs Some) 
testedFunc() |> should be Some 
testedFunc() |> should equal Some 

Alle funktionieren nicht zurückgibt. Ich möchte lieber nicht verwenden:

match testedFunc() with 
    | Some -> Pass() 
    | None -> Fail() 

Wer weiß einen Weg, dies zu tun?

+0

Zum Vergleich mit Unquote (http://code.google.com/p/unquote/), siehe https://gist.github.com/2366849 –

Antwort

4

Ich habe wirklich nicht verwendet FsUnit, aber so etwas wie dies funktionieren sollte ...

testedFunc() |> Option.isSome |> should be true 

Oder weil eine Option bereits eine IsSome Eigenschaft hat, könnten Sie dies tun, aber der Fall vorsichtig sein - es ist anders als die Option.isSome Funktion.

testedFunc().IsSome |> should be true 

Ein dritter Ansatz wäre, um die Funktion zu komponieren zusammen Sie mit Option.isSome Prüfung sind eine Funktion zu erhalten, die boolean direkt zurückgibt. Dies ist in diesem Beispiel nicht so nützlich, aber wenn Sie eine Funktion zum Zurücksetzen von Optionen mehrere Male mit einer Vielzahl von Eingaben testen müssen, könnte dieser Ansatz dazu beitragen, doppelten Code zu reduzieren.

let testedFunc = testedFunc >> Option.isSome 
testedFunc() |> should be true 
+0

scheint jetzt offensichtlich haha –

Verwandte Themen