2012-05-07 9 views
44

Ich begann meine Arbeit durch die Scala Koans, die um eine Reihe von Komponententests mit Leerzeichen, die man ausfüllen muss organisiert. (Diese Idee wurde nach einem ähnlichen Ruby Koans-Projekt modelliert.) Sie starten das Tool sbt, einen Test auszuführen und es mahnt:Was ist der === (Triple-equals) Operator in Scala Koans?

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

... und so gehen Sie Blick auf dieses Gerät zu testen, und es sagt:

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

... und nach der Meditation, merkt man, dass Sie füllen Sie sollten der Rohling wie folgt:

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

... und dann geht es weiter zum nächsten Komponententest.

Meine Frage ist, was ist das === Operator? Ich kann es nirgends finden. Ist das im Scala-Koans-Projekt selbst ein DSL-Betreiber? Oder ist es Teil des ScalaTest-Frameworks? Oder in Scala?

Antwort

70

Dies ist der Dreifachgleichheitsoperator von ScalaTest. Schauen Sie sich diese Seite an: Getting Started with FunSuite. Dort heißt es:

ScalaTest Sie Syntax Scala Behauptung lässt, sondern definiert eine dreifache gleich Operator (===) Sie bessere Fehlermeldungen zu geben. Die folgende Code würden Sie einen Fehler geben angibt, nur dass eine Behauptung ist fehlgeschlagen:

assert(1 == 2) 

mit der Triple-Gleichen Sie stattdessen würde die informativere Fehler Meldung „1 hat nicht gleich 2“:

assert(1 === 2)