私は、値が、含まれているデータをチェックする必要もなく、識別されたユニオンの特定のケースであることを確認したいと思います。私のモチベーションは、単体テストごとに1つだけテストすることです。次のようにFsUnitとの識別されたユニオンの大文字小文字を確認するにはどうすればよいですか?
例は、(最後の2行は、コンパイルエラーを与える)である:
module MyState
open NUnit.Framework
open FsUnit
type MyState =
| StateOne of int
| StateTwo of int
let increment state =
match state with
| StateOne n when n = 10 -> StateTwo 0
| StateOne n -> StateOne (n + 1)
| StateTwo n -> StateTwo (n + 1)
[<Test>]
let ``incrementing StateOne 10 produces a StateTwo``()=
let state = StateOne 10
(increment state) |> should equal (StateTwo 0) // works fine
(increment state) |> should equal (StateTwo _) // I would like to write this...
(increment state) |> should be instanceOfType<StateTwo> // ...or this
が、これはFsUnitで行うことができますか?
私はthis answerを認識していますが、それぞれのケースで一致する関数を書く必要はありません(実際のコードでは2つ以上のものがあります)。
が実際のC#からこれを行うには合理的に簡単な方法がありますが、それはF#で動作しません。
は今働いされなければなりません。 –