10

Webページのリクエスト仕様を作成しようとしています。

このページは開発中、エラーなしで動作します。

しかし、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)

エラーが発生すると、stdout に表示され、ラックは環境 (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 に答える