Scala Koans中的===(三重等于)运算符是什么?

时间:2012-05-07 21:40:17

标签: scala scalatest scala-2.9

我开始研究Scala Koans,它是围绕一系列单元测试组织的,需要填充空白。(这个想法是在类似的Ruby Koans项目之后建模的。)你启动了sbt工具运行测试,它告诫:

[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框架的一部分?或者在Scala中?

1 个答案:

答案 0 :(得分:81)

这是来自ScalaTest的三等号运算符。看看这个页面:Getting Started with FunSuite。它说:

  

ScalaTest允许您使用Scala的断言语法,但定义了三元组   equals运算符(===)为您提供更好的错误消息。下列   代码会给你一个错误,只显示一个断言失败:

assert(1 == 2)
     

使用三等号代替会给你更多信息错误   消息,“1不等于2”:

assert(1 === 2)