Почему RSpec / Capybara выдает ошибку с дефисными значениями, предоставленными public_send? - PullRequest
0 голосов
/ 30 января 2020

У меня есть общий пример, который я использую для проверки одного и того же на нескольких контроллерах. Я передаю контроллеру модель и список полей, чтобы проверить, что они находятся на странице, но когда значение является строкой через дефис, оно выдает ошибку, даже если значение находится на странице. Странно, однако, что он бросает дефис в чеке. Итак, если в поле фамилии в пользовательской таблице указано «Джонсон-Смит», то я получаю ответ ...

expected to find text matching "Johnson Smith" in...

И, глядя вниз на текст страницы, который он отображает, я ясно вижу "Джонсон" -Smith». Я не понимаю, почему Rspec / Capybara не проверяют правильное значение. Вот общий пример кода ..

RSpec.shared_examples 'renders proper fields' do |klass, fields|
  it 'should render the expected text' do
    model_object = klass.order(:created_at).last
    fields&.each do |field|
      expect(page).to have_text(model_object.public_send(field))
    end
  end
end

EDIT Я проверил результаты для каждого public_send (поля), который оценивается, и выясняется, что public_send возвращает поле из базы данных как и ожидалось. Таким образом, проблема в том, что Капибара оценивает его без дефиса, даже несмотря на то, что он передал текст с дефисом.

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