0

我已经编写了一个中值函数,并想为它添加一些单元测试。

所以我在specs2中写了这个

class TestStats extends Specification {
  "Median function " should {
    "be None for an empty list" in { Stats.median([]) must beNone }
    "be the midpoint of an odd length list" in { Stats.median([1,2,3]) must_== Some(2)}
    "be the average of the two midpoints of an even length list" in { Stats.median([1,2,3,4])     must_== Some(2.5)}
  }
}

但是,它不会与在线错误No implicit view available from Option[Double] => org.specs2.execute.Result.一起编译"be None...

我不明白为什么它在这里要求这个。我真的应该写一个隐含的自己来做这个比较吗?

编辑所以这个问题纯粹是语法问题 - 请参阅下面的答案。我有点恼火,因为语法错误被报告为语义错误,这就是为什么我从来没有想过我的列表文字是错误的。

4

1 回答 1

1

显然,我最近在 Python 上花了太长时间。更正列表文字语法可解决问题:

class TestStats extends Specification {
  "Median function " should {
    "be None for an empty list" in { median(Nil) must_== None }
    "be the midpoint of an odd length list" in { median(List(1, 2, 3)) must_== Some(2) }
    "be the average of the two midpoints of an even length list" in { median(List(1, 2, 3, 4)) must_== Some(2.5) }
  }
}
于 2012-06-21T15:01:02.267 回答