2

我正在使用 test.check,并且正在测试一个将地图作为参数的函数。这些映射确实具有定义的结构,例如:

{:name "Bob" :age 42 :email "bob@example.com" :admin true}

关键点,有一组预期的键,其值具有不同的明确定义的生成器。

我看了看gen/map,但如何将它用于更结构化的键/值对并不明显:

(gen/sample (gen/map gen/keyword gen/boolean) 5)
;; => ({} {:z false} {:k true} {:v8Z false} {:9E false, :3uww false, :2s true})

这似乎是一个简单的场景,但找不到 示例

如何使用 test.check 生成结构化地图,例如此处描述的地图?

4

1 回答 1

5

使用gen/hash-map而不是gen/map.

=> (gen/sample (gen/hash-map :name gen/string
                             :age gen/int
                             :email email-gen     ; from test.check examples
                             :admin gen/boolean))
({:email "00w@hotmail.com", :age 0, :name "", :admin true}
 {:email "mi6@computer.org", :age -1, :name "Á6", :admin false}
 {:email "Ux4gp@hotmail.com", :age 4, :name "z", :admin true})
于 2014-12-04T21:45:37.723 回答