scalacheck:提升自定义随机生成器

scalacheck: lift custom random generator

是否可以将自定义生成函数提升到 Gen

例如,为 mongo.

生成 ObjectIds
import org.mongodb.scala.bson.ObjectId
import org.scalacheck.Gen

val genObjectId: Gen[ObjectId] = Gen.lift(() => new ObjectId)

我发现的 only possible solution 是像这样破解生成器:

val genObjectId: Gen[ObjectId] = Gen.numChar.map(_ => new ObjectId)

使用 Gen.hexChar 生成 ObjectIds 是无关紧要的,因为:

Gen.delay(Gen.const(new ObjectId))

delay 的参数是按名称命名的,因此每次尝试生成一个值都会构造一个新的 ObjectId.