Проверьте наличие подстроки в массиве строк в rspec - PullRequest
0 голосов
/ 04 марта 2019
json[:errors] = ["Username can't be blank", "Email can't be blank"]

Ошибка в en.yml сама по себе представлена ​​в виде:

username: "can't be blank",
email: "can't be blank"

и теста:

expect(json[:errors]).to include t('activerecord.errors.messages.email')

, который не выполняется, потому что он смотрит на строку "Электронная почта не может быть пустой ", и" не может быть пустой "не соответствует ей.

Мой вопрос заключается в том, каков наилучший (и под этим я подразумеваю наилучшую практику) способ проверки этой подстрокивходит в строку, содержащуюся в массиве json [: errors]

1 Ответ

0 голосов
/ 05 марта 2019

RSpec предлагает широкий выбор совпадений.В этом случае вам нужно использовать include matcher ( docs ) для проверки каждого элемента массива.И вам нужно будет использовать match сопоставитель регулярных выражений ( документы ), чтобы соответствовать подстроке:

expect(json[:errors]).to include(match(/can't be blank/))

Для удобства чтения, сопоставитель регулярных выражений match имеет псевдоним a_string_matching, вот так:

expect(json[:errors]).to include(a_string_matching(/can't be blank/))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...