36
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

RSpecのsleep処理について

Last updated at Posted at 2015-05-06

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を使えといった書き方をしているが、そんなことはない。

36
23
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
36
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?