#scala #scalatest #scalacheck #magnolia-scala
#scala #scalatest #проверка scalacheck #magnolia-scala
Вопрос:
Используя базовый пример, я пытаюсь случайным образом сгенерировать кучу экземпляров Person ( case class Person(name: String, age: Int
), используя эту библиотеку для генерации случайных данных.
Проблема, с которой я сталкиваюсь, заключается в создании произвольного класса, который имеет ограниченные ограничения для параметра 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]
Я не понимаю, почему он не может найти нужный ему произвольный, любой совет был бы полезен.
Комментарии:
1. @jwvh вот и все, спасибо 🙂 Если вы опубликуете это в качестве ответа, я буду рад пометить его как принятый
Ответ №1:
Несмотря на то, что на неявное значение редко, если вообще когда-либо, ссылаются по имени, оно все равно нуждается в нем, что в спецификации языка называется «стабильным идентификатором».
Использование _
в качестве имени переменной сообщает компилятору, что он может забыть об этом значении после его создания.