Capybara - 确定超时的ajax响应代码(rspec / capybara / webkit / puffing-billy)

时间:2016-06-14 15:40:22

标签: ruby-on-rails ruby ruby-on-rails-4 rspec capybara

我进行了操作测试以检查右侧消息是否显示在Rails UJS / ajax模式中,错误404,500 ...以下是一个示例(下面的测试通过;我使用{{3存根ajax响应)

it " displays correct modal message appears  correctly after relevant 500 xhr / ajax response is received" do
  visit deal_page_path(deal)    
  proxy.stub("http://127.0.0.1:59533/deals/dealname/thrill").and_return(:code => 500)
  first('a.button').click 
  wait_for_ajax
  within('ul.messenger') do           
    expect(page).to have_content('So sorry, we had a bug, try again')
  end
end

但是我没有测试当问题是超时时显示正确的消息:事实上我没有在rspec内部存根,ajax发送的响应是超时因为Chrome / webkit实际上不发送头文件也没有一个"容易"代码如500但发送状态(已取消)。

puffing billy gem

我尝试没有成功:

proxy.stub("http://127.0.0.1:59533/deals/dealname/thrill").and_return(:status => 'canceled')

proxy.stub("http://127.0.0.1:59533/deals/dealname/thrill").and_return(:status => '(canceled)')

注意:不确定它与相同的chrome / webkit行为有关,但我看到了这篇文章:enter image description here

1 个答案:

答案 0 :(得分:1)

您所谈论的超时没有http状态代码,因为超时特别是在该时间范围内未返回任何http状态代码。如果上游连接超时,代理可能会返回一些状态代码,但我认为这与您正在测试的内容不同。我在你的另一个问题上回答了关于如何让连接变得比你的超时设置更长的时间 - this one