非空 UUID 的任意实例
Arbitrary instance for non-null UUID
我在为某些具有 UUID 字段的记录类型创建 Arbitrary
实例时遇到问题。智能构造函数确保 UUID 不能为空。是否有一种惯用的方法来修改 Test.QuickCheck.Instances.UUID
中的 UUID Arbitrary
实例,使其不生成空值 - 也就是说,生成器不应生成 00000000-0000-0000-0000-000000000000
?
您需要的关键部分是 suchThat
。当您的实例调用 arbitrary
来获取 UUID 时,请改为调用 arbitrary `suchThat` (not . Data.UUID.Types.null)
。此外,如果您的类型定义了 shrink
,则在收缩 UUID 时,在收缩列表中执行 filter (not . Data.UUID.Types.null)
。
我在为某些具有 UUID 字段的记录类型创建 Arbitrary
实例时遇到问题。智能构造函数确保 UUID 不能为空。是否有一种惯用的方法来修改 Test.QuickCheck.Instances.UUID
中的 UUID Arbitrary
实例,使其不生成空值 - 也就是说,生成器不应生成 00000000-0000-0000-0000-000000000000
?
您需要的关键部分是 suchThat
。当您的实例调用 arbitrary
来获取 UUID 时,请改为调用 arbitrary `suchThat` (not . Data.UUID.Types.null)
。此外,如果您的类型定义了 shrink
,则在收缩 UUID 时,在收缩列表中执行 filter (not . Data.UUID.Types.null)
。