【RSpec】Capybaraについて
はじめに
Rails+RSpec+Capybraの環境で開発、テストを行っているので、Capybaraについて整理しておきます。
Capybaraとは?
Capybaraは、Webアプリケーションのインテグレーション・テストを補助する為のライブラリです。 Capybaraが提供する本質的な機能としては、DSLとDriverの2点のみです。
DSL(ドメイン固有言語)
特定の問題に特化したコンピュータ言語です。Capybaraはテスティングフレームワークを操作する命令を、それぞれのフレームワークに依存しない形で提供します。つまり、テスティングフレームワークであるCucumberやRSpec,Test::Unitなどを透過的に利用できます。
ドライバー
Webアプリケーションのインテグレーション・テストには、ブラウザもしくはそれに類するものが必要です。その為に、Seleniumのようにブラウザを操作するフレームワークや、WebKitのようなブラウザのレンダリングエンジンを直接使う方法があります。Capybaraは、それらをドライバとして扱うことが出来ます。
CapybaraのDSL
画面遷移
メソッド | 機能 |
---|---|
visit | GETページで遷移します |
click_link click_bottun click_on
リンクとクリック機能
メソッド | 機能 |
---|---|
click_link(' id ') | ID指定でリンクをクリック |
click_link( 'リンクテキスト' ) | リンクのテキスト名でクリック |
click_button('ボタン名') | ボタン名でクリック |
click_on( 'テキスト' ) | リンクかボタンどちらかをクリック |
click_on( ’value' ) | ボタンの値指定でクリック |
フォーム入力機能
メソッド | 機能 |
---|---|
visit | GETページで遷移します |
fill_in('ラベルの名前') | それぞれの入力フォームに値を入れる |
choose('ラジオボタン') | ラジオボタンを選択する |
check('チェックボタン') | チェックボタンを選択します |
uncheck('チェックボタン') | チェックボタンの洗濯を外す |
attach_file('image', '/path/to/image.jpg') | 画像を添付します |
select('Option', from: 'Select box') | セレクトボックスを選択する |
スコープ機能
スコープ機能を利用することで、特定のエレメント下のみ操作できます。
within("li#unique_name") do fill_in 'Name', :with => '五十嵐さん' end
マッチャ
expect(page).to have_content('この文字見つかる') #このページにあるかな? expect(current_path).to eq(root_path) #パス合ってる?
別タブに移動して操作する
# 最後に開いたタブに移動している
switch_to_window(windows.last)