統合テスト

フィーチャスペック

Rspecを使って統合テストを行うためのスペック。
アプリケーションの肝となる動作を総合的にテストしたい場合に用いる。

一部の記述の名前が単体テストと異なる

フィーチャスペックでは、
itの代わりにscenarioを、
beforebackground
describefeature
letgivenと記述する慣習がある。

これらは全てエイリアスメソッドなので、名前が異なるだけで内部的な実装は全く同じ。
フィーチャスペックでも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

コメント