Как работает «спецификация» BDD-фреймворка для Scala?

StackOverflow https://stackoverflow.com/questions/590002

  •  09-09-2019
  •  | 
  •  

Вопрос

Я только начинаю работать со 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"
    }
  }
}

Это из модульные тесты для Kestrel.

Что тут происходит?Делает "PersistentQueue" should означает, что строковый класс Scala был расширен методом «следует», или здесь происходит что-то еще?Я бегло просмотрел документацию Scala, но не смог увидеть, какие языковые функции используются в этом примере кода.

Это было полезно?

Решение

Мне кажется, что к классу String добавляются неявные методы. Эта почта есть демонстрация.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top