2012-06-21 90 views
0

我已經寫了一箇中值函數,並希望爲它添加一些單元測試。Spec2單元測試不編譯

所以我在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...行編譯。

我不明白爲什麼它在這裏要求這個。我真的應該寫一個隱含的自己來做這個比較嗎?

編輯所以這個問題純粹是句法 - 請參閱下面的答案。我有點討厭語法錯誤被報告給我,因爲它是一個語義錯誤,這就是爲什麼我從來沒有想到我的列表文字是錯誤的。

+2

請問您能否顯示更多代碼(包括導入)?是什麼 []?乍一看你的測試看起來是正確的。 – Christian

+0

您使用的是什麼進口產品? –

+3

'[]','[1,2,3]'和'[1,2,3,4]'是無效的Scala代碼。 –

回答

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) } 
    } 
} 
+0

它甚至編譯與您的其他列表(Python?)語法? – Christian

+0

不,我在問爲什麼它不會編譯 – Squidly

+0

我的意思是,我會期望有一個不同的編譯器錯誤比你有:-) – Christian