Строка включает утверждение без круглых скобок с помощью ScalaTest Matchers

На http://www.artima.com/weblogs/viewpost.jsp?thread=246279 Я обнаружил, что следующие утверждения должны работать:

string should startWith substring "Hello"
string should endWith substring "world"
string should include substring "seven"

Однако это не компилируется

Error:(15, 29) value substring is not a member of MyTest.this.ResultOfStartWithWordForString
    string should startWith substring "Hello"

Можно ли написать строку, включающую утверждение, без использования круглых скобок?


person Michal Kordas    schedule 17.06.2016    source источник
comment
Ваша проблема не в include, проблема в substring, как вы можете видеть в сообщении об ошибке, она уже терпит неудачу при первом утверждении. Я думаю, вы должны использовать `строка должна начинаться с подстроки (Hello) и т. д.   -  person Zoltán    schedule 17.06.2016
comment
Со скобками получаю ту же ошибку, не помогает   -  person Michal Kordas    schedule 17.06.2016


Ответы (1)


На самом деле в текущих версиях Scalatest не допускается использование substring после include или других средств сопоставления строк. Возможно, в упомянутой вами статье описывалась очень старая версия библиотеки. Вы можете либо пойти на

string should include("Hello")

для сопоставления подстроки или

string should include regex("Hello\\s+")

для сопоставления регулярных выражений.

И отвечая на ваш вопрос о скобках - Scalatest DSL ограничен в этом аспекте тем, что только выражения, состоящие из нечетного количества подвыражений, могут быть записаны без скобок.

Таким образом, справедливы следующие два утверждения:

string should include("Hello")
string should not include "Hello"
person Sergey    schedule 17.06.2016