私はせっかちな人のために Scala 8.4 を実行するための解決策を書こうとしていますが、specs2 テストで奇妙なエラーが発生しています。
コードは次のようになります。
abstract class Item {
def price: Double
def description: String
}
class SimpleItem(val price: Double, val description: String) extends Item
class Bundle(items: List[Item], val description: String) extends Item {
def price = (items map (_.price)).sum
}
テストは次のとおりです。
"SimpleItem" should {
"allow usage of Item methods" in {
val si = new SimpleItem(13, "Nail")
si.price mustEqual 13
si.description mustEqual "Nail"
}
}
"Bundle" should {
"summarize item prices" {
val l = List(new SimpleItem(2, "Fork"), new SimpleItem(3, "Knife"))
val b = new Bundle(l, "Cutlery")
b.price mustEqual 5
b.description mustEqual "Cutlery"
}
}
最初のテストはスムーズにパスしますが、2 番目のテストでは次のようになります。
[error] found : org.specs2.matcher.MatchResult[Any]
[error] required: Int
[error] b.description mustEqual "Cutlery"
理解できません。なぜ Int を期待するのでしょうか? なぜ最初のテストで機能するのですか?