2014-01-16 38 views

回答

1

這可以通過很多方式完成。當然,你可以嘗試寫自己的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的人更懶惰

相關問題