0
ScalaCheck API定義了8個用於從多達8個參數的函數創建屬性的所有方法。是否有可能測試具有多於8個參數的功能?測試具有多於8個參數的函數
ScalaCheck API定義了8個用於從多達8個參數的函數創建屬性的所有方法。是否有可能測試具有多於8個參數的功能?測試具有多於8個參數的函數
這可以通過很多方式完成。當然,你可以嘗試寫自己的forAll9含蓄,但我建議你創建自己的發電機
例如,我們有一個有趣的,接收經度,緯度和高度,讓它成爲像
case class Coordinate(longtitude: Int, latitude: Int, height: Int)
讓這種情況下類是參數一些有趣
teleportToHawaii(coordinate: Coordinate): Coordinate
現在讓我們寫生成它。讓我們假設經度/緯度可以-180/+ 180和高度從0到8000,我不是太熟悉ScalaCheck,但我想它應該像
import org.scalacheck.Gen
val coordsGen = for {
long <- Gen.choose(-180, 180)
lat <- Gen.choose(-180, 180)
height <- Gen.choose(0, 8000)
} yield Coordinate(long, lat, height)
所以,現在,我們可以測試我們的瞬移的樂趣,只有一個參數的使用,而不是三個:
forAll (coordsGen) { (coord: Coordinate) =>
teleportToHawaii(coord) should equal HawaiiCoordinate
}
編寫您自己的發電機組可以包含任何數量的東西
那麼,爲什麼只有8 incapsulated參數呢?我想scalaCheck的人只比那些寫Tuple22的人更懶惰