Проверка регулярного выражения (подстроки) происходит в любом месте любого из элементов в массиве строк - PullRequest
1 голос
/ 25 декабря 2011

Моя спецификация хочет проверить, возникает ли определенная подстрока в любой записи массива строк.

p @banner.errors.messages[:base] #=> ["Specify a leader text or an image, not both"]

Все, что моя спецификация действительно хочет знать, так это то, встречается ли строка «not both» в любом из элементов массива.

 @banner.errors.messages[:base].should include(/not both/)

терпит неудачу, потому что "not both" не входит в ["Specify a leader text or an image, not both"]

Примечание. Когда я проверяю на соответствие буквенной строке (должна включать ("Укажите ... оба"), все работает. Но это мне кажется грязным. Такие тексты с пользовательским интерфейсом не важны для прохождения теста; и такие тексты будут меняться: при каждом изменении сообщения об ошибке мне нужно будет обновить свои тесты.

1 Ответ

3 голосов
/ 25 декабря 2011

Может, вот так?

@banner.errors.messages[:base].join.should match(/not both/)

Но учтите, что существует граничный случай, когда совпадение может состоять из двух или более строк, например строка, заканчивающаяся "not", а следующая строка - "both".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...