2012-05-07 23 views
44

Rozpocząłem pracę nad Scala Koans, która jest zorganizowana wokół zestawu testów jednostkowych z pustymi miejscami, które trzeba wypełnić. (Pomysł ten był wzorowany na podobnym projekcie Ruby Koans.) Uruchamiasz narzędzie sbt uruchamiając test , i napomina:Co to jest operator === (potrójny) w Scala Koans?

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

... i tak pójdziesz spojrzeć na to testów jednostkowych i mówi:

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

... i po medytacji, zdajesz sobie sprawę, że należy wypełnić puste miejsce w ten sposób:

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

... a następnie przechodzi do następnego testu jednostkowego.

Moje pytanie brzmi: czym jest ten operator ===? Nigdzie nie mogę tego znaleźć. Czy jest to operator DSL zdefiniowany w samym projekcie Scala Koans? Czy jest to część frameworka ScalaTest? A może w Scali to właściwe?

Odpowiedz

70

To jest operator o potrójnym zakresie od ScalaTest. Spójrz na tę stronę: Getting Started with FunSuite. Mówi:

ScalaTest pozwala używać składni twierdzenie Scala, ale definiuje potrójne równa operatora (===), aby dać lepsze komunikaty o błędach. Poniższy kod nie daje błąd wskazujący tylko, że twierdzenie nie powiodło się:

assert(1 == 2) 

Korzystanie potrójne równych zamiast tego daje bardziej informacyjny błąd komunikat „1 nie równa 2”:

assert(1 === 2)