関数のリストを受け取る関数をプロパティベースでテストするにはどうすればよいですか?
次の関数を使用します。
let handleAll handlers item =
handlers |> List.collect(fun handler -> handler item)
追加のコンテキストは次のとおりです。
let handleAll handlers item =
handlers |> List.collect(fun handler -> handler item)
let handlers = [
handleShipping
handleRoyalty
handleCommission
handleVideo
handleEmail]
(*Client*)
let result = (handlers , Book) ||> handleAll
次のテストを試してみたところ、実行時に任意の関数が生成されているため、定義済みの関数が (明らかに) 使用されていないことに気付きました。
例:
[handleShipping
handleRoyalty
handleCommission
handleVideo
handleEmail]
私のプロパティテストは次のとおりです。
(*Property Tests*)
open FsCheck
open FsCheck.Xunit
[<Property(MaxTest = 1000, QuietOnSuccess = true)>]
let ``handleAll always returns elements for at least (1) handler`` () =
(Arb.generate<(Item -> Command list) list>
|> Gen.filter(List.isEmpty >> not) , Arb.generate<Item>)
||>Gen.map2(fun handlers item -> handlers , item)
|> Arb.fromGen
|> Prop.forAll
<| fun (handlers , item) ->
(handlers , item)
||> handleAll
|> List.isEmpty |> not
handleAll関数はプロパティベースでテスト可能ですか?