Bir değerin, dahil edilen herhangi bir veriyi de kontrol etmek zorunda kalmadan, ayrımcı bir birliğin özel bir durumu olduğunu kontrol etmek istiyorum. Benim motivasyonum, her bir birim testi ile sadece bir şeyi test etmektir. aşağıdaki gibiFsUnit ile ayrımcılık yapılan bir kuruluşun durumu nasıl kontrol edilir?
örneği (son iki satır derleme hataları verin):
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
bu FsUnit yapılabilir mi?
this answer'un farkındayım, ancak her durum için eşleme işlevleri yazmak zorunda kalmamayı tercih ediyorum (gerçek kodumda ikiden çok var).
aslında C# bunu yapmanın oldukça kolay bir yolu yoktur, ancak F # çalışmaz:
şimdi çalışıyor olmalı. –