Rails 5 + Capybara:XHR请求报告状态0

时间:2017-02-02 11:26:19

标签: phantomjs capybara ruby-on-rails-5 poltergeist capybara-webkit

在将我们的应用程序升级到Rails 5的过程中,我在基于Capybara的功​​能规范中看到了一些令人困惑的Javascript XHR请求行为。

以下是有问题的代码(CoffeeScript):

$.ajax(
  url: "/foobar"
).done((_data, _status, _jqXhr) ->
  # *snip* all is well
  return
).fail((jqXhr) ->
  # This should be 422 but is 0 instead
  status = jqXhr.status
  console.log("AJAX request returned with error code #{status}")
  return
)
  • development模式和真实浏览器(即Chromium或Firefox)中使用Rails服务器时一切正常
  • Poltergeist / PhantomJS报告状态0
  • capybara-webkit也会报告状态0
  • Selenium Webdriver(geckodriver)正确报告状态422

Poltergeist(1.11.0)和PhantomJS(2.1.1)的版本保持不变。在Rails 5的宝石更新期间,Capybara从2.10.2升级到2.12.0,但我也将旧分支升级到Capybara 2.12.0,没有任何破坏,所以很可能这不是问题也是。

我能够打造出神话般的PhantomJS开发者控制台,并且在网络"面板,看到状态代码也是test模式,422符合预期,这意味着问题必定在JavaScript-land中。

请注意,这不是跨源请求,并且请求不会中止(状态代码0的常见原因)。而且由于它在development模式下有效,我有点困惑可能是这种行为的罪魁祸首。

我也尝试查看回调函数的其他属性和参数,以及是否可以在其他属性中找到状态代码,但是没有运气好。

0 个答案:

没有答案