CapybaraのwithinをRSpecで使う

RSpec の RequestSpec 等で Capybara を使っているのですけど、最近割と積極的に within を使うようになったので、基本的な使い方を紹介。以前はなぜかあまり使ってませんでした、というか必要になる場面があまりなかったかな。within を使いセレクタを指定することで、操作・テストのセレクタ範囲対象を簡単に絞り込むことができます。

— 環境 —
capybara (2.2.0)

スポンサーリンク

within でセレクタを指定してフォーム入力

GitHub の Readme には、RSpec と共に使う例として以下のサンプルが掲載されていました。

jnicklas/capybara: Using Capybara with RSpec

#session(id=”session” のセレクタ)にあるフォームに fill_in(入力)して click_button(サブミット)する操作。expect でサブミット後に、Success が表示されることをテストしてあります。

within で指定したセレクタの範囲に文字列が表示されることをテスト

GitHub の Readme には掲載されていなかったのですけど、within で指定したセレクタの範囲に特定の文字列が表示されること等を確認するテストも、以下のように書けます。

これは /some/page の <div id="hoge">…</div> のセレクタ内に “hoge” という文字列が表示されることを確認しています。

以下のページが参考になりました。

RSpecとCapybaraでJavaScript/Ajaxをテストする – Rails 雑感 – Ruby on Rails with OIAX

その他、footer タグのセレクタ(<footer>…</footer>)内にある、HOME へのリンクをクリックする例は以下。

XPath で within のセレクタを指定

Capybara のセレクタ指定はデフォルトでは CSS ですが、以下のように書くと XPath による指定も行えます。

私は XPath が好きじゃないので、基本的に使わないようにしていますけれど。

スポンサーリンク
私は Rails のテストフレームワークには RSpec を使っています。サーバーのテスト用に Serverspec もおすすめです。
スポンサーリンク
 
Twitterを使っていますのでフォローお願いたします!ブログの更新情報もつぶやいてます^^
(英語学習用)

Leave Your Message!