FsCheck を使い始めたばかりです。いくつかのテスト データを生成する必要があります。ここでTestData
は、テストへの入力を表します。
type Interval = { Start : DateTime; End : DateTime }
type Frob = { Interval : Interval; MustFrob : bool }
type TestData = { Intervals: Interval[]; Frob : Frob option }
私の生成コードは次のようになります。
let generator = gen {
let! startTime = Arb.Default.DateTime().Generator
return! Gen.sized(fun size -> gen {
let intervalDurations = Gen.listOfLength size myOwnSuperDurationGenerator
let intervals =
// blabla using startTime and intervalDurations
let! maybeFrob = Arb.Default.Option<Frob>().Generator
let adjustedFrob = maybeFrob |> Option.map(fun f ->
{ f with Interval = // mess with the interval }
return { Intervals = intervals; Frob = adjustedFrob }
}
}
したがって、これは機能しArb.Default.Blabla().Generator
ますが、サイズパラメーターを渡すことができないため、テストで縮小を利用できないため、への呼び出しは好きではありません。たとえば、 を に縮小しFrob option
たりNone
、より単純な を選択したりしstartTime
ます。このような単一の値を生成するときに、そのサイズ パラメータを伝播する方法はありますか? - また、ひどい初心者の間違いを指摘していただきありがとうございます。私は本当にこの API の使用方法を理解しようとしています。