我有一个Foo
带有构造函数的类型,该构造函数采用Int
. 如何定义用于 scalacheck 的implicit
Arbitrary
for Foo
?
implicit def arbFoo: Arbitrary[Foo] = ???
我想出了以下解决方案,但对于我的口味来说,它有点过于“手动”和低级:
val fooGen = for (i <- Gen.choose(Int.MinValue, Int.MaxValue)) yield new Foo(i)
implicit def arbFoo: Arbitrary[Foo] = Arbitrary(fooGen)
理想情况下,我想要一个高阶函数,我只需要插入一个Int => Foo
函数。
我设法将其缩减为:
implicit def arbFoo = Arbitrary(Gen.resultOf((i: Int) => new Foo(i)))
但我仍然觉得必须有一个稍微简单的方法。