2009-02-26 26 views
7

Je viens juste de commencer avec Scala, et je me demande quelle fonctionnalité de langue vous permet de le faire:Comment fonctionne le framework BDD "specs" pour Scala?

"PersistentQueue" should { 
    "add and remove one item" in { 
    withTempFolder { 
     val q = new PersistentQueue(folderName, "work", Config.fromMap(Map.empty)) 
     q.setup 

     q.length mustEqual 0 
     q.totalItems mustEqual 0 
     q.bytes mustEqual 0 
     q.journalSize mustEqual 0 

     q.add("hello kitty".getBytes) 

     q.length mustEqual 1 
     q.totalItems mustEqual 1 
     q.bytes mustEqual 11 
     q.journalSize mustEqual 32 

     new String(q.remove.get.data) mustEqual "hello kitty" 

     q.length mustEqual 0 
     q.totalItems mustEqual 1 
     q.bytes mustEqual 0 
     q.journalSize mustEqual 33 

     q.close 
     dumpJournal("work") mustEqual "add(11:0:hello kitty), remove" 
    } 
    } 
} 

C'est du unit tests for Kestrel.

Que se passe-t-il ici? Est-ce que "PersistentQueue" should signifie que la classe de chaînes Scala a été étendue avec une méthode «devrait», ou est-ce que quelque chose d'autre se passe ici? J'ai jeté un rapide coup d'œil à la documentation de Scala, mais je n'ai pas pu voir quelles fonctions de langage sont utilisées pour cet exemple de code.

Répondre

6

Il semble que des méthodes implicites soient ajoutées à la classe String. This post a une démonstration.