2012-05-07 60 views
44

我開始通過Scala Koans,這是一套單元測試與周圍一個需要填補的空白組織工作我的方式。(這個想法類似的紅寶石Koans項目爲藍本。)你開始運行測試的SBT工具,並告誡:Scala Koans中的===(triple-equals)運算符是什麼?

 
[info] + ***************************************** 
[info] + 
[info] + 
[info] + 
[info] + Please meditate on koan "None equals None" of suite "AboutEmptyValues" 
[info] + 
[info] + 
[info] + 
[info] + ***************************************** 

...等你在這個單元測試去看看它說:

 
test("None equals None") { 
    assert(None === __) 
} 

...和冥想之後,你意識到你應該填寫像這樣的空白:

 
test("None equals None") { 
    assert(None === None) 
} 

...然後它移動到下一個單元測試。

我的問題,雖然是這是什麼===操作?我似乎無法在任何地方找到它。這是在Scala Koans項目中定義的DSL運營商嗎?還是它是ScalaTest框架的一部分?或者在斯卡拉適當?

回答

70

這是來自ScalaTest的三等分運算符。看看這個頁面:Getting Started with FunSuite。它說:

ScalaTest讓你使用Scala的聲明語法,而是定義了一個三元 等於運算符(===)以得到更好的錯誤訊息。下面 代碼會給你僅指示某個斷言失敗的錯誤:

assert(1 == 2) 

使用三重等號,而不是會給你更多的信息錯誤 消息,「1不等於2」:

assert(1 === 2)