#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, ваше предложение помогло мне.