15

テストがタイムアウトし、ランダムに失敗するという問題が発生しています。堅牢なカピバラ統合テストを作成する方法のベストプラクティスを探していましたが、役立つものは何も見つかりませんでした。

一連のテストを書き始めて以来、CIサーバーはランダムに失敗し、アプリは非常に不安定に見えますが、テストは常に(ほとんど)ローカルで合格しています。

あなたと他の経験豊富なBDD/TDDの達人がどのように対処するかを知りたいです。

  • 外部のJavaScriptなど(KissMetrics、Google Analyicsなど)を処理する方法と
  • ビルドを中断するタイムアウトエラーのデバッグと防止

どんな助けでもいただければ幸いです。

4

2 に答える 2

7

これをフォローアップする。@jonleightonがポルターガイストにバグを報告するよう招待してくれたことに感謝しますが、私が遭遇した問題は2つの別々の問題に関連していました。

  1. この投稿で明確に概説されている提案に従わなかったためにタイムアウトする、悪い/間違ったカピバラの主張
  2. サードパーティのJavaScriptなど。基本的に、私はkissmetrics、google analytics、さらにはテストが間違っているたびに読み込まれるライブヘルプチャットなどのサードパーティのJavaScriptを持っていましたが、これを排除し、テストがより速くなり、より安定して一貫しているように見えます。
于 2013-02-04T07:14:58.110 に答える
3

多くの場合、ポルターガイストのブラックリスト機能を利用することで、統合テストをより決定論的にすることができます。私の場合、次のようなホスト名をブラックリストに登録しました。

typekit.net
facebook.net
facebook.com
google.com
google-analytics.com
...

アイデアは、a)テストに実際には必要ではなく、b)CI環境でのページの読み込み完了に影響を与える可能性があるものをすべてオフにすることです。これが非常に役立つことに気づきました。また、このPhantomJSオプションをPoltergeistで使用すると、次のことも役立ちます。

phantomjs_options: ['--ignore-ssl-errors=yes']
于 2016-02-13T13:14:08.823 に答える