10

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

此页面在开发中正常工作,没有错误。

但是在 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

为了找出原因,我开始剥离页面上的标记和 JavaScript。以至于它是一个带有普通提交按钮的空表单。我仍然收到上述错误!

测试现在字面意思是:

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

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

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

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

这对我来说毫无意义。有人对如何从这里进行调试有任何建议吗?

谢谢你的帮助

4

4 回答 4

19

将以下内容添加到您的水豚配置中。

require 'rack/utils'
Capybara.app = Rack::ShowExceptions.new(NameOfYourRailsApp::Application)

当您现在收到错误时,您会在标准输出上看到它,并且 rack 将呈现一个页面,其中包含有关环境(cookie 等)和回溯的详细信息。

于 2012-08-30T10:34:47.070 回答
7

您看到的错误很可能是 capybara-webkit 告诉您页面中存在某种异常的神秘方式。不久前我遇到了同样的问题,“无法加载 URL”的事情完全让我失望,很难找到实际的问题。

作为一些尝试的事情,我建议:

  • 确保您安装了最新版本的 capybara-webkit。
  • 检查实际形式以外的测试元素,例如控制器逻辑和涉及的任何模型。剥离一切,直到一无所有。
  • 查看有关此问题的讨论并从那里跟踪线索。我很确定这是同一个问题或相关问题。

祝你好运!

于 2012-08-09T08:53:45.777 回答
3

我正在使用子域,我可以将以下内容添加到spec_helper.rb

Capybara.configure do |config|
  config.javascript_driver = :webkit
  config.server_port = 3000
  config.app_host = "http://subdomain.local.host:3000"
end

显然之前添加127.0.0.1 subdomain.local.host到我的/etc/hosts文件中

于 2013-08-27T22:49:27.380 回答
2

我有一个类似的问题,并且能够通过启用启用的测试来解决page.driver.browser.ignore_ssl_errors:js。这是对我有用的代码:

config.before(:each) do
    if Capybara.current_driver == :webkit
      # Need to manually specify ignoring of SSL errors
      page.driver.browser.ignore_ssl_errors
    end
end
于 2015-02-17T06:08:37.117 回答