rspec не видит поля, динамически добавляемые или удаляемые cocoon во вложенной форме

#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 отсутствовал. Также спасибо за все советы, это очень подробно.