RSpecのテスト内容を見てみるとsleepが大量に使っている場合があります。
これがどうにかならないのか色々と調べてみた。
どういう時にsleepが使われているか?
使用目的としては画面遷移が完了するまでの待機やAjaxなどjavascriptの処理を待つに使われるのがほとんどの模様
対策
遷移後の画面にあるべき要素を検索する(find)という処理を入れる。
findは要素が見つかるまで(default_wait_timeの間)ループ処理が入るため、sleepを使うよりスマートと思われる。
他にもhas_◯◯(has_xpath,has_cssなど)でもfindと同じようにループ処理が入る。
findとは挙動が違い、Ajaxの後にsleepを用いている際にはhas_◯◯を使うべきである。
2015/07/03 10:18 追記:
have_xxxでも以下のようにexpectを用いる場合にはループ処理が入る。
test_spec.rb
expect(page).to have_xxx "Foo bar"
まとめ
日本語の情報のほとんどがsleepやwaitを使えといった書き方をしているが、そんなことはない。