2009-02-26 11 views
7

Tôi chỉ bắt đầu với Scala, và tôi tự hỏi mà tính năng ngôn ngữ cho phép bạn làm điều này:Cơ chế "BDD" cho Scala hoạt động như thế nào?

"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" 
    } 
    } 
} 

Đó là từ unit tests for Kestrel.

Điều gì đang xảy ra ở đây? Có phải "PersistentQueue" should có nghĩa là lớp chuỗi Scala đã được mở rộng bằng một phương thức "nên", hay là cái gì khác đang xảy ra ở đây? Tôi đã xem qua tài liệu của Scala nhưng không thể xem các tính năng ngôn ngữ nào đang được sử dụng cho mẫu mã này.

Trả lời

6

Dường như các phương thức ngầm được thêm vào lớp Chuỗi đối với tôi. This post có trình diễn.