Rails例外を取得して、CapybaraとSeleniumを使用して表示します
-
08-10-2019 - |
質問
CapybaraとSeleniumを使用してRailsで統合テストを実行する際に、例外が発生した場合、スタックトレースのある通常の例外画面の代わりに空白の白いページが表示されます。カピバラにスタックトレースページを表示する方法はありますか?
解決
WebrickまたはThinで表示するスタックトレースを取得することはできませんでしたが、私の最終的な回避策は、Stderrにスタックトレースを適切に印刷するMongrelを使用することでした。
Capybara 0.4.1.2以降では、Capybaraを構成することができます。
Capybara.server do |app, port|
require 'rack/handler/mongrel'
Rack::Handler::Mongrel.run(app, :Port => port)
end
他のヒント
マットの解決策は私にはうまくいきませんでしたが、まさにこの要点 https://gist.github.com/1443408やりました。
https://github.com/thoughtbot/capybara-webkit/issues/226 なぜそれが起こるのかをより詳細に説明し、与えられたGISTが何をするかについて説明を提供します。
これは、スタックトレースが 発達 実行モード(または「環境」)、および統合テストはで実行されます 製造 環境。
もちろん、生産モードの設定を微調整することで、例外を表示できるようになる場合があります。しかし、それは正しい方法ではありません。最良の方法は次のとおりです。
- ファイルまたはログサーバー(HopToad?)で例外とスタックトレースをログに記録します。ユーザーが表示できませんが、
- 例外をキャッチし、エラーページをレンダリングします
お役に立てれば。よろしくお願いします。
所属していません StackOverflow