Как работает «спецификация» BDD-фреймворка для Scala?
Вопрос
Я только начинаю работать со 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 добавляются неявные методы. Эта почта есть демонстрация.
Не связан с StackOverflow