0
我試圖實現DRY的測試中,我得到了標題隱含的錯誤時使用ScalaCheck
庫和ScalaTest
爲scala檢查中的運行時類型啓用隱式導入。 「找不到參數內含價值」
測試我自己的家中自釀Monoid
班階:
Error:(16, 12) could not find implicit value for parameter arbA: org.scalacheck.Arbitrary[A]
forAll { (a: A) =>
^
這裏是intAddition
含半幺羣的實現:
trait Monoid[A] {
def op(a1: A, a2: A): A
def zero: A
}
object Monoid {
...
val intAddition: Monoid[Int] = new Monoid[Int] {
override def op(a1: Int, a2: Int): Int = a1 + a2
override def zero: Int = 0
}
...
}
而且測試套件:
import org.fpinscala.monoids.Monoid._
import org.fpinscala.testutils.UnitSpec
import org.scalatest.prop.PropertyChecks
import org.scalacheck.Arbitrary._
import scala.language.implicitConversions
class MonoidSpec extends UnitSpec with PropertyChecks {
def assertIdentityBehaviour[A](M: Monoid[A]): Unit = {
import M._
forAll { (a: A) =>
op(zero, a) should be(a)
op(a, zero) should be(a)
}
}
behavior of "intAdditionMonoid"
it should "obey identity laws" in {
assertIdentityBehaviour(intAddition)
}
}
此代碼編譯但在運行時失敗(運行時類型擦除?)。 是我想在Scala中實現的可能性嗎?
我很抱歉,錯誤沒有出現在IDE中,但確實出現在sbt輸出中。一般來說我是新來的scala:P – coderatchet