3

Ruby on Rails アプリでさまざまなシナリオをテストするために、Cucumber、Capybara、および Capybara-webkit を使用しています。

シナリオの実行中にページの JavaScript エラーを検出してテストに失敗する方法はありますか? これらのテストを使用して、自動テスト実行の一環として、変更の間に機能 (JavaScript を含む) が壊れないようにしています。

テスト出力で失敗を確認できますが、テストは失敗しません。

http://127.0.0.1:54928/...|16|ReferenceError: Can't find variable: $
http://127.0.0.1:54928/...|16|ReferenceError: Can't find variable: $
...

ありがとう!

更新:私が見つけた 1 つの方法は、以前のエラーが発生しなかった場合にのみ可能になる JavaScript を実行しようとするステップを用意することです。その場合、次のようなエラーが発生します。

Javascript failed to execute (Capybara::Driver::Webkit::WebkitInvalidResponseError)
./features/step_definitions/....rb:19:in `/^I should not see any JavaScript errors$/'
features/....feature:34:in `Then I should not see any JavaScript errors'

より良い方法はありますか?

4

4 に答える 4

3

はい、すべてのコンソール メッセージにアクセスすることもpage.driver.console_messages、エラー メッセージのみにアクセスすることもできますpage.driver.error_messages

JavaScriptエラーがないかどうかをテストするには、次のことをお勧めします。

Then /^I should see no Java\-Script errors$/ do
  page.driver.error_messages.length.should == 0
end

補足: capybara-webkit には:have_errors、nice を書き込むためのマッチャーも含まれていpage.should_not have_errorsます。残念ながら、これは現在のバージョンでは壊れているようです (少なくとも私にとっては、https ://github.com/thoughtbot/capybara-webkit/pull/201 も参照してください) 。

于 2012-03-23T09:12:47.613 に答える
0

JavaScriptエラーの通知が役立つ場合もありますが、実際のJavaScriptの動作をテストすることを目的とする必要があります。JavaScriptエラーがある場合、これは失敗したシナリオとして現れるはずです。

于 2012-02-12T23:09:28.967 に答える
-1

各ステップで実行するための最良の方法は、「ページを表示して」、Webコンソールを確認することです。次に、コードにconsole.logを配置できます。選択したステップに対してアクションを実行する場所。

于 2012-02-09T11:51:09.563 に答える