8

スペックがハングすることがあり、対応する ruby​​ プロセスを強制終了する必要があります。capybara と webkit ドライバーで書かれた統合仕様を実行するとよくあることです。

特定の ruby​​ のプロセスを調べて、ハングする場所を確認することはできますか? どのメソッド、操作、ファイル、行番号など。

4

2 に答える 2

1

私もこの問題を抱えていて、特定のページの ShareThis JavaScript ウィジェットにたどり着きました。これを使用している場合と使用していない場合がありますが、実際の問題はおそらく、ページ上の何かが終了しない外部要求を引き起こしているためにハングすることです。Capybara-webkit は元のリクエストを認識しますが、このコード自体がリクエストを行った場合、capybara-webkit はそれを知ることはなく、最後のリクエストがハングした場合、たとえば応答を待っている場合、capybara-webkit も同様です...

あなたのために、webkit-debug を使用してテストを実行し、最後に行われたリクエストを確認してください。私にとっては、次のことがわかりました。

    1 requests remaining 
    Page finished with true 
    Received 200 from "http://w.sharethis.com/share4x/js/st.60709d5fdf0c137e879e64f41b8a6606.js" 
    0 requests remaining 
    Started request to "http://w.sharethis.com/share4x/css/share.470030190b6a6bdc89365fcc74d3bf55.css" 
    Received 200 from "http://w.sharethis.com/share4x/css/share.470030190b6a6bdc89365fcc74d3bf55.css" 
    0 requests remaining 

そして、ShareThis のコードベースを検索する手がかりになりました。そのコードの周りに if(Rails.env.test?) ブロックを配置すると、出来上がりです。テスト環境の条件をコードベースに入れなければならないのは、くだらない回避策です...しかし、このばかげた問題から先に進むことができました...

お役に立てれば。

于 2012-11-20T05:45:23.833 に答える