Capybara with Poltergeist - 与数据方法的链接:删除或:补丁不触发
Capybara with Poltergeist - links with data-method :delete or :patch not triggering
使用带有 Poltergeist 的 Capybara 点击具有 data-method='delete'
属性的 link。
Capybara 继续前进,就好像 link 已被成功点击,但没有实际请求到达服务器。
测试日志显示了导致显示页面的所有步骤...但没有请求适当的 link。
它毫无问题地找到了正确的 link,并认为它已点击它。
我应该指出它不是 :remote link 并且它在开发中有效
有什么想法吗?
代码如下:
scenario "deletes a document", js: true do
set_auto_accept_for_alert_and_confirm_dialogs
sign_in_admin admin
visit admin_dashboard_path
find(:css, '#mediaDropdown').trigger('click')
find(:css, '#documents_link').click
find(:css, "#delete_link_#{document.id}").click
expect(current_path).to eq admin_documents_path
expect(Document.all.size).to eq 0
expect(page).to have_content(I18n.t('notices.admin.documents.destroy.success'))
end
我延长了等待时间,添加了长时间睡眠并在 'delete' link 之前使用了 byebug
并尝试在控制台中调用它。
Capybara(2.10.1) - Poltergeist(1.11.0) - Rails(4.2.7.1) - jquery-rails(4.2.1) - turbolinks(5.0.1)
我打开了调试:
Capybara.register_driver :poltergeist do |app|
Capybara::Poltergeist::Driver.new(app, { js_errors: true, debug: true })
end
这引发了 javascript 错误 Can't find variable: $
- 所以 jQuery 没有被加载。
我检查了测试日志以查看是否正在调用 javascript 文件 - 它是。
我更改了 javascript 文件以更改页面上的一些文本 - 但没有任何反应。所以问题似乎出在资产管道上。
最后,问题是因为 public\assets
文件夹中创建了一个 .sprokets-manifest
文件,否则该文件夹是空的。
我从来没有在这个应用程序上预编译资产,所以我不知道清单文件来自哪里。
删除 .sprokets-manifest
文件很容易解决。
使用带有 Poltergeist 的 Capybara 点击具有 data-method='delete'
属性的 link。
Capybara 继续前进,就好像 link 已被成功点击,但没有实际请求到达服务器。
测试日志显示了导致显示页面的所有步骤...但没有请求适当的 link。
它毫无问题地找到了正确的 link,并认为它已点击它。
我应该指出它不是 :remote link 并且它在开发中有效
有什么想法吗?
代码如下:
scenario "deletes a document", js: true do
set_auto_accept_for_alert_and_confirm_dialogs
sign_in_admin admin
visit admin_dashboard_path
find(:css, '#mediaDropdown').trigger('click')
find(:css, '#documents_link').click
find(:css, "#delete_link_#{document.id}").click
expect(current_path).to eq admin_documents_path
expect(Document.all.size).to eq 0
expect(page).to have_content(I18n.t('notices.admin.documents.destroy.success'))
end
我延长了等待时间,添加了长时间睡眠并在 'delete' link 之前使用了 byebug
并尝试在控制台中调用它。
Capybara(2.10.1) - Poltergeist(1.11.0) - Rails(4.2.7.1) - jquery-rails(4.2.1) - turbolinks(5.0.1)
我打开了调试:
Capybara.register_driver :poltergeist do |app|
Capybara::Poltergeist::Driver.new(app, { js_errors: true, debug: true })
end
这引发了 javascript 错误 Can't find variable: $
- 所以 jQuery 没有被加载。
我检查了测试日志以查看是否正在调用 javascript 文件 - 它是。
我更改了 javascript 文件以更改页面上的一些文本 - 但没有任何反应。所以问题似乎出在资产管道上。
最后,问题是因为 public\assets
文件夹中创建了一个 .sprokets-manifest
文件,否则该文件夹是空的。
我从来没有在这个应用程序上预编译资产,所以我不知道清单文件来自哪里。
删除 .sprokets-manifest
文件很容易解决。