Что такое оператор === (тройной эквивалент) в Scala Koans?

Я начал свой путь через Scala Koans, который организован вокруг набора модульных тестов с пробелами, которые нужно заполнить. (Эта идея был смоделирован после аналогичного проекта Ruby Koans.) Вы запускаете инструмент sbt, запускающий тест, и он предупреждает:

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

... и поэтому вы смотрите на этот unit test, и он говорит:

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

... и после медитации вы понимаете, что вы должны заполнить пробел следующим образом:

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

... и затем он переходит к следующему unit test.

Мой вопрос, однако, в том, что это за оператор ===? Кажется, я ничего не могу найти. Является ли это оператором DSL, определенным в проекте Scala Koans? Или это часть рамок ScalaTest? Или в Scala правильно?

Ответ 1

Это оператор с тремя значениями из ScalaTest. Посмотрите на эту страницу: Начало работы с FunSuite. В нем говорится:

ScalaTest позволяет использовать синтаксис утверждения Scala, но определяет тройку equals operator (===), чтобы дать вам лучшие сообщения об ошибках. Следующие код даст вам ошибку, указывающую только на то, что утверждение не выполнено:

assert(1 == 2)

Использование тройных равных вместо этого даст вам более информативную ошибку сообщение "1 не равно 2":

assert(1 === 2)