水豚和 Ajax 请求文件准备就绪
Capybara and Ajax request on document ready
所以我在页面上有脚本:
$(document).ready ->
$.rails.ajax
type: 'POST'
url: url
data:
request:
'some data': data
success: (response) ->
do something
我有功能测试:
RSpec.describe 'some test', type: :feature, js: true do
it 'tests' do
visit '/'
page.select 'some value', from: 'id'
click_on('Some button')
expect(page).to have_content 'some text'
end
还有一些配置:
Capybara.register_driver :chrome do |app|
Capybara::Selenium::Driver.new(app, browser: :chrome)
end
Capybara.javascript_driver = :chrome
如何让水豚 运行 那些应该 运行 在文档上的脚本准备好?现在id好像没有了运行
无需告诉 Capybara 运行 页面中的脚本。如果脚本在页面中,那么 Chrome 将 运行 它(假设没有 JS 错误等)。
由于您没有指明测试在哪一行失败,或者具体的失败消息是什么,因此很难准确判断 ajax 请求正在加载到页面的内容以及您是否期望visit '/'
返回的页面上的 运行 代码或单击按钮指向的页面上的代码。如果是前者,那么当 ajax 请求成功时,您需要对页面发生的任何可见更改有一个预期。如果是后者,那么您很可能只是将 Capybara.default_max_wait_time
设置得对于您正在测试的硬件而言太低(将其增加到 5 或 10)。
所以我在页面上有脚本:
$(document).ready ->
$.rails.ajax
type: 'POST'
url: url
data:
request:
'some data': data
success: (response) ->
do something
我有功能测试:
RSpec.describe 'some test', type: :feature, js: true do
it 'tests' do
visit '/'
page.select 'some value', from: 'id'
click_on('Some button')
expect(page).to have_content 'some text'
end
还有一些配置:
Capybara.register_driver :chrome do |app|
Capybara::Selenium::Driver.new(app, browser: :chrome)
end
Capybara.javascript_driver = :chrome
如何让水豚 运行 那些应该 运行 在文档上的脚本准备好?现在id好像没有了运行
无需告诉 Capybara 运行 页面中的脚本。如果脚本在页面中,那么 Chrome 将 运行 它(假设没有 JS 错误等)。
由于您没有指明测试在哪一行失败,或者具体的失败消息是什么,因此很难准确判断 ajax 请求正在加载到页面的内容以及您是否期望visit '/'
返回的页面上的 运行 代码或单击按钮指向的页面上的代码。如果是前者,那么当 ajax 请求成功时,您需要对页面发生的任何可见更改有一个预期。如果是后者,那么您很可能只是将 Capybara.default_max_wait_time
设置得对于您正在测试的硬件而言太低(将其增加到 5 或 10)。