水豚和 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)。