2016-12-21 21 views
-1

私はRailsアプリケーションの統合テストを書こうとしています。そのGUIはかなり複雑なので、AJAX要求とDOMレンダリングがすべて正しく動作するように、(コントローラやユニットテストとは対照的に)多くの統合テストが必要です。カピバラでCSSとJSを読み込む方法は?

私はCapybara、Capybara-webkit、Poltergeist、Chromedriverを試しましたが、いずれもCSSやdocument.readyの機能を実行していません。

私は大量の読書を行い、多くの解決策を試しましたが、成功しませんでした。私はそれがアセットパイプラインと関係するかもしれないと思う。

問題のトラブルシューティングを行うには、次にどこを確認するかわかりません。

おかげで、私の場合は ルイーズ

答えて

3

は、それが資産のパイプラインとは何かを持っていました。

test.rbでアセット連結を無効にした後、すべて正常に機能しました。

test.rb:

# Debug mode disables concatenation and preprocessing of assets. 
    # This option may cause significant delays in view rendering with a large 
    # number of complex assets. 
    config.assets.debug = true 

spec_helper:

Capybara.register_driver :chrome do |app| 
    Capybara::Selenium::Driver.new(app, :browser => :chrome) 
end 

Capybara.javascript_driver = :chrome 
Capybara.asset_host = "http://localhost:3000" 

ソート。私はこれを見つけるためにchromedriverに切り替える必要がありました。実際には、テストドライバが実際のブラウザでその仕事をし、Chromeのjavascriptコンソールを開いて(capybaraはデバッガで一時停止していましたが)何が起こっていたかを見てください。

+1

前のファイルのいずれかが評価されないようにエラーを投げていることを意味する連結を無効にする必要がある場合(ファイルが連結されているテスト/生産モードで) - dev console in開発モードを選択し、表示されているJSエラーを修正します。 –

+0

アドバイスをいただきありがとうございます! devにエラーはありません。私はCapybaraにjsエラー(js:trueとjs_errors:true)を表示する必要があると思っていましたが、何も表示されません。 – Louise

+0

IIRC js_errorsは、capybara-webkitではないポラテジストのオプションです。 capybara-webkitでは、JSによって引き起こされたエラーを表示するには 'page.driver.error_messages'をチェックする必要があります - 私はcapybara-webkitがそうでないようなES6機能に関連するエラーを表示しますサポート –

関連する問題