我在为某些具有UUID字段的记录类型创建Arbitrary
实例时遇到麻烦。智能构造函数可确保UUID不能为null。是否有惯用的方式从Arbitrary
修改UUID Test.QuickCheck.Instances.UUID
实例,使其不生成空值-也就是说,生成器不应该生成00000000-0000-0000-0000-000000000000
?
您需要的关键是suchThat
。当您的实例将调用suchThat
以获取UUID时,请调用arbitrary
。另外,如果您的类型定义为arbitrary `suchThat` (not . Data.UUID.Types.null)
,则在收缩UUID时,请在收缩列表上执行shrink
。