#ruby-on-rails #ruby-on-rails-4 #capybara #poltergeist
#ruby-on-rails #ruby-on-rails-4 #capybara #полтергейст
Вопрос:
Я пытаюсь протестировать код с асинхронным javascript, и мой тест время от времени терпит неудачу.
scenario 'User can delete his comment', js: true do
within('.answer') do
click_link 'Comments (0)'
find_link('Add Comment').click
fill_in 'comment[content]', with: 'MyComment'
click_on 'Post comment'
end
within('.comment') do
click_link 'Delete'
end
expect(page).to have_text('Your comment has been deleted.')
end
Сообщение об ошибке:
Capybara::ElementNotFound:
Unable to find link "Add Comment"
Как я понимаю, find_link
метод имеет встроенную функцию ожидания. В чем моя ошибка?
Я использую poltergeist в качестве драйвера js, и моя конфигурация:
Capybara.javascript_driver = :poltergeist
Capybara.default_max_wait_time = 10
options = { js_errors: false }
Capybara.register_driver :poltergeist do |app|
Capybara::Poltergeist::Driver.new(app, options)
end
Комментарии:
1. click_link идентичен find_link(…).нажмите, чтобы не использовать вторую форму. Если тест периодически завершается неудачно, и первый щелчок вызывает запрос, проверьте свой журнал тестов, чтобы узнать, что отправляется. Если тест всегда завершается неудачно, проверьте регистр текста ссылки на вашей странице
2. @Tom, большое спасибо за помощь!