首页 > 解决方案 > 非空 UUID 的任意实例

问题描述

我无法Arbitrary为某些具有 UUID 字段的记录类型创建实例。智能构造函数确保 UUID 不能为空。是否有一种惯用的方法来修改 UUIDArbitrary实例Test.QuickCheck.Instances.UUID,使其不生成空值 - 也就是说,生成器不应该生成00000000-0000-0000-0000-000000000000

标签: haskelluuidquickcheck

解决方案


您需要的关键部分是suchThat. 当您的实例调用arbitrary以获取 UUID 时,请arbitrary `suchThat` (not . Data.UUID.Types.null)改为调用。此外,如果您的类型定义了shrink,则在缩小 UUID 时,请filter (not . Data.UUID.Types.null)在缩小列表中执行。


推荐阅读