テストの失敗の原因を調査するのに非常に苦労しています。私は非常に経験豊富なプログラマーであり、一般的なデバッグ手法に精通していますが、Capybara と RSpec は初めてなので、私が知らない何らかの機能が役立つことを願っています。
要するに、次のようなテストがあります。
expect { click('.fake_button'); sleep 1 }.to change { clicks.count }.by(1)
偽のボタンがクリックされると、Rails アプリへの AJAX 呼び出しがトリガーされ、データベースにクリック レコードが追加されます。このテストが失敗する原因となっている可能性のある多くのことが考えられますが、ログから情報を取得することに成功したのは限られています。テストは開発で失敗することはなく、テストで散発的に失敗するだけです。テスト環境の違いの 1 つは、テストがクラウド内のサーバーに対してオフィス内のサーバーで実行されるため、ネットワークの遅延やその他の問題が発生する可能性があることです。
これを診断するのは非常に困難です。失敗したテストから得られる情報は非常に少なく、もちろん、失敗について読んだときにはすべてのデータベース情報が破棄されているからです。テストで変更されていないことはわかっており、成功したclicks.count
と推測できclick('.fake_button')
ますが、サーバー時間の同期の問題により、クリックが正しいボタンで発生したのか、AJAX 呼び出しが発生したのかさえわかりません。
私が望むのは、このテスト ケースを Web サーバーのログで追跡するのに役立つツール (たとえば、自動 URL パラメーターを使用するなど)、Capybara が行ったことに関する詳細なログ、および Web ページが変更されたときの Web ページの記録です。 Cookie 値を含め、エラーが発生しました。私はそれを手に入れることができますか?そのようなものはありますか?