Capybara webkit无效响应错误,如何调试?

Chr*_*ris 9 rspec ruby-on-rails capybara ruby-on-rails-3 capybara-webkit

我正在尝试为网页编写请求规范.

此页面正在开发中,没有错误.

但是在capybara webkit中运行我在尝试提交表单后收到此错误:

 Failure/Error: Unable to find matching line from backtrace
 Capybara::Driver::Webkit::WebkitInvalidResponseError:
   Unable to load URL: https://127.0.0.1:33416/sign_in
Run Code Online (Sandbox Code Playgroud)

为了找出原因,我开始在页面上删除标记和JavaScript.到具有普通提交按钮的空表单的程度.我仍然得到上述错误!

该测试现在字面上:

it "should be able create a new foo", :js, :focus do
  visit new_foo_path
  find('#submit').click
end
Run Code Online (Sandbox Code Playgroud)

但是,如果我删除:js选项,此测试确实有效:

it "should be able create a new foo", :focus do
  visit new_foo_path
  find('#submit').click
end
Run Code Online (Sandbox Code Playgroud)

Javascript测试在此应用程序的其他页面中有效...

这对我没有意义.有没有人有任何建议如何从这里调试?

谢谢你的帮助

ops*_*psb 19

将以下内容添加到capybara配置中.

require 'rack/utils'
Capybara.app = Rack::ShowExceptions.new(NameOfYourRailsApp::Application)
Run Code Online (Sandbox Code Playgroud)

当你收到错误时,你会在stdout上看到它,机架将呈现一个页面,其中包含有关环境(cookie等)和回溯的详细信息.

  • 这应该是公认的答案(我的答案只是一些建议,这个确实解决了问题). (2认同)

Chr*_*erg 7

您看到的错误很可能是capybara-webkit的神秘方式,告诉您页面中存在某种异常.我有一段时间遇到同样的问题,"无法加载URL"的事情完全让我失望,很难找到实际的问题.

作为一些尝试,我建议:

  • 确保安装了最新版本的capybara-webkit.
  • 检查测试元素而不是实际形式,例如控制器逻辑和所涉及的任何模型.把一切都剥掉,直到你什么都没有.
  • 查看有关此问题的讨论,并从那里关注潜在客户.我很确定这是同一个问题或相关问题.

祝好运!