这个
scalatest website
有什么要说的吗
forAll
:
含蓄的
Arbitrary
发电机和
Shrink
需要提供对象
对于
福尔
方法将每行数据传递给每个参数
类型ScalaCheck提供了许多隐式
任意的
发电机
常见类型,如
Int
,则,
String
,则,
List[Float]
等
org.scalacheck.Arbitrary
伴生对象。只要你使用类型
ScalaCheck已经为其提供了隐式
任意的
发电机,
你不必担心他们。与相同
收缩
对象,它们是
由ScalaCheck提供
org.scalacheck.Shrink
伴生对象。最
通常,您只需将属性函数传递给
福尔
,以及
编译器将获取ScalaCheck提供的隐式值。
很遗憾你不能使用
福尔
检查所有可能的类型,因为没有隐式
任意的
和
收缩
每种可能类型的对象。似乎很难生成任何类型的任意对象。
您所能做的最好的事情是:
def checkComposeForAll[A : Arbitrary : Shrink, B : Arbitrary : Shrink, C : Arbitrary : Shrink]() = {
forAll { (a: A, g: B => C, f: A => B) =>
compose(g, f)(a) should be(g(f(a)))
}
}
checkComposeForAll[Int, Int, Int]()
checkComposeForAll[String, String, String]()
checkComposeForAll[List[Int], Double, Int]()
// ... etc, check a bunch of types ...