可能是一个愚蠢的问题,但是如何为 FSCheck 生成特定大小的列表?
我可以限制使用:
let fn_of_2_check xs = (xs.Length=2) ==> fn_of_2 xs
但是,显然,这会丢弃大量列表。
这里仅对fn_of_2
长度列表进行一些测试2
并返回true
or false
。
怎么样:
let listOfLength n = Gen.listOfLength n Arb.generate |> Arb.fromGen
Check.Quick (Prop.forAll (listOfLength 2) fn_of_2)
一个简单的解决方案是编写一个测试,该测试接受两个输入并从中构建一个二元素列表:
let fn_of_2_check x y = fn_of_2 [x; y]
但是,如果您仅针对二元素列表测试该函数,那么该函数可能应该将二元素元组作为输入。或者,您可以编写一个测试来验证二元素列表的某些行为和其他长度列表的某些其他行为。
(但是,如果您想专门检查二元素列表的行为,那么上面应该可以工作。)