Capybara / RSpec / Rails / Ruby

連載: Rails4+RSpec+Capybaraでよく使うマッチャ&メソッド22個+α

この連載ではRails4でCapybaraを使ったテストのやり方を順番に紹介します。

「」第回の今回はCapybaraの導入とhave_titleマッチャでのタイトル内容テストを行います。

Capybaraとは

CapybaraはWebページのテストを簡単にしてくれるツールです。

どう簡単になるかはなかなか説明が難しいのですが、この連載を読み進めてもらって簡単さを感じてもらえるといいなと思っています。がんばります。

Capybaraのインストール

いつも通りGemfileに

gem 'capybara'

を追加してbundle installを実行すればOKです。

Capybaraでのテストコードを作る

テストコードはspec/features以下に作るのがお決まりのようです。

例えばこんな感じでテストコードのひな形を用意します。

# spec/features/view_top_page_spec.rb
require 'rails_helper'

describe 'view top page', type: :feature do
end

Capybaraでサイトにアクセスする

Capybaraではサイトにアクセスして、その内容を確認するという形でテストを行います。

まずはサイトにアクセスする必要があるのですが、それにはvisitメソッドを使います。

例えばトップページにアクセスするのであれば

visit '/'

と書きます。

もし他の/about.htmlなどにアクセスするのであれば

visit '/about.html'

と書けばOKです。

have_titleマッチャでタイトル内容を確認する

visitメソッドでページにアクセスするとpageメソッドでページ内容を取得できるようになるので、次はページ内容の確認をします。

have_titleマッチャでのタイトル内容確認を行うので

expect(page).to have_title '江の島エンジニアBlog'

のようにマッチャを使います。

これでCapybaraでのタイトル内容確認はOKです。

ここまでのテストコードをまとめると

# spec/features/view_top_page_spec.rb
require 'rails_helper'

describe 'view top page', type: :feature do
  scenario do
    visit '/'
    expect(page).to have_title '江の島エンジニアBlog'
  end
end

となります。

なお、scenarioitのエイリアスなのでitを使っても良いのですがCapybaraでのテストコードではscenarioを使うのが通例となっています。

テストを実行する

実際にテストを実行すると

$ bundle exec rspec spec/features/view_top_page_spec.rb
view top page
  should have title "江の島エンジニアBlog"

Finished in 2.29 seconds (files took 6.57 seconds to load)
1 example, 0 failures

と無事タイトル確認のテストが成功しました。

まとめ

Capybaraの導入とタイトル内容確認テストを行いました。

次回はhave_contentマッチャでのコンテンツ内容の確認をします。

関連記事