#ruby-on-rails-4 #rspec #nested-forms #cocoon-gem
#ruby-on-rails-4 #rspec #вложенные формы #cocoon-gem
Вопрос:
В моем приложении в Rails 4 я использую Cocoon для создания вложенных форм.
Он хорошо работает в браузере, но я хочу добавить несколько тестов с помощью rspec.
Если я делаю click_link("add")
(или «удаляю») в своем тесте, rspec не видит никаких изменений (я печатаю page.body
до и после).
Я также пробовал с a sleep(10)
, но это то же самое.
Как я могу проверить, хорошо ли работает действие (добавление или удаление вложенной формы)?
Спасибо
Редактировать:
Сценарий для тестирования :
scenario "nested form" do
user_sign_in
contact = FactoryGirl.create(:contact)
visit new_message_path
expect(page).to have_text("New message")
puts page.html
click_link('Add an action') # <------ click on the link to add a new nested form
puts page.html # <--- the page is the same as before the click
expect(page).to have_text("New action")
user_sign_out
end
Комментарии:
1. Можете ли вы опубликовать весь свой сценарий?
js: true
Прошли ли вы в качестве опции соответствующий тест?2. @ChrisPeters Спасибо. Вы правы, я не передаю эту
js: true
опцию. Я этого не знал. Я буду смотреть в этом направлении. Еще раз спасибо3. Да, вам понадобится
selenium-webdriver
capybara-webkit
драгоценный камень or . У меня сложилось впечатление, что с первым проще начать и работать.4. @ChrisPeters: спасибо за все! Если вы напишете ответ
js: true
, я приму его.5. Добавлен ответ. Рад, что вы разобрались.
Ответ №1:
Если вы хотите протестировать функциональность, связанную с JavaScript, тогда вам нужно передать js: true
в качестве опции связанные scenario
s:
scenario "nested form", js: true do
user_sign_in
contact = FactoryGirl.create(:contact)
visit new_message_path
expect(page).to have_text("New message")
click_link('Add an action')
expect(page).to have_text("New action")
user_sign_out
end
Для этого вам также понадобятся selenium-webdriver
либо capybara-webkit
драгоценные камни or . У меня сложилось впечатление, что с Selenium проще начать, но WebKit работает намного быстрее.
Обратите внимание, что вы также можете перейти js: true
к feature
, context
, или describe
, если вам нужно протестировать несколько scenario
с помощью JavaScript.
Комментарии:
1. Спасибо, Крис, это было именно так.
js: true
отсутствовал. Также спасибо за все советы, это очень подробно.