2

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 の使用方法を理解しようとしています。

4

0 に答える 0