【发布时间】:2012-04-03 10:55:00
【问题描述】:
我有一个类型Foo,其构造函数采用Int。如何为 Foo 定义一个 implicit Arbitrary 以与 scalacheck 一起使用?
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)))
但我仍然觉得必须有一个稍微简单一点的方法。
【问题讨论】:
标签: unit-testing scala generator implicit scalacheck