フィーチャスペック
Rspecを使って統合テストを行うためのスペック。
アプリケーションの肝となる動作を総合的にテストしたい場合に用いる。
一部の記述の名前が単体テストと異なる
フィーチャスペックでは、
itの代わりにscenarioを、
beforeをbackground、
describeをfeature、
letをgivenと記述する慣習がある。
これらは全てエイリアスメソッドなので、名前が異なるだけで内部的な実装は全く同じ。
フィーチャスペックでもit・before・describe・letを使える。
どっちで書くかは現場次第。
同一テスト内に複数のexpectを記述。
マッチャ
have_content / have_no_contentマッチャ
引数に指定したバリューを持つHTML要素がそのページに存在する/しないことを確かめるためのマッチャ
Capybara
gem。
ブラウザの操作を再現するのに必要。
特定の要素をクリックしたり、フォームに値を入力したり、特定の要素が画面に表示されているかなど、様々なブラウザ上の動きをテストできる。
Capybaraを導入することで、テストを記述するためのヘルパーメソッドが複数追加される。
visitメソッド
引数にURL、 もしくはプレフィックスを指定し、そのページに移動する。
visit("/hogehoge")
visit hogehoge_path
click_onメソッド
指定したHTML要素をクリックする。
引数にはHTML要素のvalue属性を指定する。
find('input[type="submit"]').click
fill_inメソッド
値を入力する。
入力したいvalueを指定し、with以下に入力する値を入れる。
fill_in 'user_email', with: user.email
fill_in 'text', with: 'フィーチャスペックのテスト'
capybaraの使い方
gemファイルに以下を記述してbundle install。
group :test, :development do
gem 'capybara'
end
spec/rails_helper.rbに以下を追記。
require 'capybara/rspec'
featureSpec用のディレクトリを準備し、以下を作成。
spec/features/tweet_spec.rb
require 'rails_helper'
feature 'tweet', type: :feature do
# このブロックの内部にscenarioを記述していく
end
コメント