ScalaCheck 随机数据生成的任意大小写 class (Magnolia)
ScalaCheck Arbitrary case class with random data generation (Magnolia)
使用一个基本示例,我尝试使用 this library 随机生成一堆 Person (case class Person(name: String, age: Int
) 实例来生成随机数据。
我 运行 遇到的问题是在创建一个 Arbitrary 时,它对 age 参数有限制,如下所示。
val arbPersonUnder18: Arbitrary[Person] = Arbitrary(
for {
name <- Gen.alphaStr
age <- Gen.chooseNum(Int.MinValue, 17)
} yield Person(name, age)
)
"validatePersonForAlcohol" should {
"ensure people with age less than 18 cannot buy alcohol" in {
implicit val _: Arbitrary[Person] = arbPersonUnder18
forAll { person: Person =>
...
}
}
}
这导致 could not find implicit value for parameter arbA: org.scalacheck.Arbitrary[pbtexample.Person]
我不明白为什么它找不到它需要的任意值,任何建议都很好。
即使隐式值很少(如果有的话)通过名称引用,它仍然需要一个,语言规范称之为“稳定标识符”。
使用 _
作为变量名告诉编译器它可以在创建后忘记这个值。
使用一个基本示例,我尝试使用 this library 随机生成一堆 Person (case class Person(name: String, age: Int
) 实例来生成随机数据。
我 运行 遇到的问题是在创建一个 Arbitrary 时,它对 age 参数有限制,如下所示。
val arbPersonUnder18: Arbitrary[Person] = Arbitrary(
for {
name <- Gen.alphaStr
age <- Gen.chooseNum(Int.MinValue, 17)
} yield Person(name, age)
)
"validatePersonForAlcohol" should {
"ensure people with age less than 18 cannot buy alcohol" in {
implicit val _: Arbitrary[Person] = arbPersonUnder18
forAll { person: Person =>
...
}
}
}
这导致 could not find implicit value for parameter arbA: org.scalacheck.Arbitrary[pbtexample.Person]
我不明白为什么它找不到它需要的任意值,任何建议都很好。
即使隐式值很少(如果有的话)通过名称引用,它仍然需要一个,语言规范称之为“稳定标识符”。
使用 _
作为变量名告诉编译器它可以在创建后忘记这个值。