шаг cucumber не генерирует ожидаемый текст на странице

#ruby-on-rails #cucumber #integration-testing #capybara

#ruby-on-rails #cucumber #интеграция-тестирование #capybara

Вопрос:

У меня есть шаг, который генерирует текстовую строку после вычисления разницы во времени. Строка на веб-странице выглядит как «Разница во времени составляет 1 час 20 минут». Мое определение шага на .функциональный файл выглядит следующим образом:

 And I should see the time difference is 1 hour 20 minutes
  

Мое определение шага:

 And(/^The time difference is (d ) hours (d ) minutes$/) do |hr, min|
  expect(page).to have_text(hr)
  expect(page).to have_text(min)
end
  

При запуске я получаю следующую ошибку:

 RSpec::Expectations::ExpectationNotMetError: expected to find text "20" in "bla bla nnThe time difference is 0 minutes"
  

Минутная часть генерируется неправильно. На неудачном снимке экрана я также вижу, что он показывает 0 минут.
Как ни странно, если я выполняю следующее, шаг проходит:

 And(/^The time difference is (d ) hours (d ) minutes$/) do |hr, min|
  expect(page).to have_text(hr)
end
  

Я также пробовал с помощью have_content, но безуспешно. Как я могу правильно установить данные?

TIA

Комментарии:

1. have_content и have_text это одно и то же, они просто псевдонимы друг друга, поэтому обмен между ними никогда не будет иметь значения. Я предполагаю, что причина, по которой ваша часовая проверка проходит, заключается в том, что у вас есть число «1» где-то еще на странице. Чтобы сделать этот тест стоящим, вы действительно должны делать что-то вроде expect(page).to have_text("The time difference is #{hr} hour #{min} minutes") . Это сделает ваш тест осмысленным — чтобы исправить причину сбоя, вам нужно будет предоставить больше сведений о фактической функции cucumber и о том, что делает страница.

2. @ThomasWalpole Я пробовал именно так, как вы упомянули, но все равно не сработало. На скриншоте показано только 0 минут вместо «ххх часов гггг минут». Непосредственно на предыдущем шаге у меня есть нажатие кнопки, которое генерирует результат. В принципе, после того, как я захожу на страницу, я выбираю пару фильтров в форме и нажимаю кнопку, и она показывает результаты. Должен ли я настраивать какие-либо данные для этого?

3. Это была проблема с данными. Я правильно настроил данные, и теперь мой тест проходит. Спасибо @ThomasWalpole, ваше предложение помогло мне.