scalacheck:提升自定义随机生成器
scalacheck: lift custom random generator
是否可以将自定义生成函数提升到 Gen
?
例如,为 mongo.
生成 ObjectId
s
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
生成 ObjectId
s 是无关紧要的,因为:
- 我每次都需要唯一的价值
- Mongo 可以将某些生成的十六进制字符串视为无效
Gen.delay(Gen.const(new ObjectId))
delay
的参数是按名称命名的,因此每次尝试生成一个值都会构造一个新的 ObjectId
.
是否可以将自定义生成函数提升到 Gen
?
例如,为 mongo.
生成ObjectId
s
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
生成 ObjectId
s 是无关紧要的,因为:
- 我每次都需要唯一的价值
- Mongo 可以将某些生成的十六进制字符串视为无效
Gen.delay(Gen.const(new ObjectId))
delay
的参数是按名称命名的,因此每次尝试生成一个值都会构造一个新的 ObjectId
.