如何使用FsCheck实现多个参数生成?
我实现了以下内容以支持多个参数生成:
// Setup
let pieces = Arb.generate<Piece> |> Gen.filter (isKing >> not)
|> Arb.fromGen
let positionsList = Arb.generate<Space list> |> Arb.fromGen
Run Code Online (Sandbox Code Playgroud)
然后我使用这些参数来测试一个函数的行为,该函数负责为给定的检查器生成移动选项:
// Test
Prop.forAll pieces <| fun piece ->
Prop.forAll positionsList <| fun positionsItem ->
positionsItem |> optionsFor piece
|> List.length <= 2
Run Code Online (Sandbox Code Playgroud)
在管理多个生成的参数类型时,是否将Prop.forAll表达式嵌套为正确的技术?
是否有替代方法为被测函数生成多个参数?
这是整个功能:
open FsCheck
open FsCheck.Xunit
[<Property(QuietOnSuccess = true)>]
let ``options for soldier can never exceed 2`` () =
// Setup
let pieces = Arb.generate<Piece> |> Gen.filter (isKing >> not)
|> Arb.fromGen
let positionsList …
Run Code Online (Sandbox Code Playgroud)