1

我正在尝试为不耐烦的人编写一个练习 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" 
    }
}

第一个测试顺利通过,但在第二个我得到:

[error]  found   : org.specs2.matcher.MatchResult[Any]
[error]  required: Int
[error]       b.description mustEqual "Cutlery"

我不明白。为什么它会期望一个 Int?为什么它在第一次测试中起作用?

4

0 回答 0