找不到org.scalacheck.Arbitrary类型的证据参数的隐含值

时间:2018-06-08 09:02:18

标签: scala context-bound

我试图使用名为random的方法,其签名如下:

def random[T: WeakTypeTag: Arbitrary]: T 

在一个名为Checking的案例类中,我得到了这个:

  

无法找到类型的证据参数的隐含值   org.scalacheck.Arbitrary [com.organization.lambda.Checking]

我知道这是由于上下文界限的一些问题,但我无法理解这一点,并了解必须做些什么。

1 个答案:

答案 0 :(得分:0)

您使用random-data-generator-magnolia吗?

如果是这样,您应该为任意[检查]案例类指定隐含值。

来自test source的示例:

implicit val arbitraryPerson: Arbitrary[Person] = Arbitrary {
  for {
    name <- Gen.oneOf("Daniela", "John", "Martin", "Marco")
    age <- Gen.choose(0, 100)
  } yield Person(name, age)
}

val instance = random[Person]

人是:

case class Person(name: String, age: Int)