2012-05-07 15 views
44

Ho iniziato a lavorare su Scala Koans, che è organizzato attorno a una suite di test unitari con spazi vuoti che è necessario compilare. (Questa idea è stata modellata su un progetto Ruby Koans simile.) Avvia lo strumento sbt eseguendo un test , e ammonisce:Qual è l'operatore === (triple-equals) in Scala Koans?

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

... e così si va un'occhiata a questo test di unità e dice:

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

... e, dopo la meditazione, si rende conto che deve essere completata lo spazio vuoto come questo:

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

... e quindi passa al test dell'unità successivo.

La mia domanda, però, è che cos'è questo operatore ===? Non riesco a trovarlo da nessuna parte. Si tratta di un operatore DSL definito nel progetto Scala Koans stesso? O fa parte del framework ScalaTest? O in Scala corretta?

risposta

70

Questo è l'operatore triplo-uguale da ScalaTest. Date un'occhiata a questa pagina: Getting Started with FunSuite. Dice:

ScalaTest consente di utilizzare la sintassi affermazione di Scala, ma definisce una tripla uguale operatore (===) per dare migliori messaggi di errore. Il codice seguente darebbe un errore che indica solamente che un'affermazione non è riuscita:

assert(1 == 2) 

Utilizzando eguali triple invece darebbe il più informativo messaggio di errore , "1 no uguale 2":

assert(1 === 2)