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]

我不明白为什么它找不到它需要的任意值,任何建议都很好。

即使隐式值很少(如果有的话)通过名称引用,它仍然需要一个,语言规范称之为“稳定标识符”。

使用 _ 作为变量名告诉编译器它可以在创建后忘记这个值。