kentana20 技忘録

技術ネタを中心に、セミナー、勉強会、書籍、会社での出来事を綴っていきます。不定期更新。

RailsアプリケーションをRSpecでテストする#1

趣味で書いてるRailsアプリケーションのテストを書いたときの備忘録。いや、技忘録。

RailsアプリケーションをRSpecでテストする

Gemfileの変更とgemのインストール

Rails初級者なので、キソから。RailsのGemfileに以下を追加します。大体、RSpecによるテストはテスト環境や開発環境で実行することが多いと思うので、"group"の機能を使って環境の指定をしておきます。

# Gemfile
group :development, :test do
  gem 'rspec-rails'
end

group :test do
  gem 'selenium-webdriver'
  gem 'capybara'
end

Gemfileに追記をしたら、Bundlerを使ってGemをインストールします。

$ bundle install
$ bundle update

RSpecを使用するために、Railsの設定を変更する

以下のコマンドでRSpecを使う準備をします。

$ rails generate rspec:install

これで、Railsアプリケーションルート直下に"spec"ディレクトリが作成されます。

テストケースを作成する

rails generateコマンドを使って、テストケースを作成します。

$ rails generate integration_test hoge

helperクラスにCapybaraの記述を追加

テストにはCapybaraを使用しますので、ヘルパークラスにCapybaraの記述を追加します。

# /spec/support/spec_helper.rb
RSpec.configure do |config|
 .
 .
  config.include Capybara::DSL
end

テストケースにテストを書く

# /spec/requests/hoge.rb
require 'spec_helper'
require 'support/utilities'

describe "hoge" do

  describe "PageInit" do
    it "response 200 check" do
      get "/hoge"
      response.status.should be(200) # レスポンスコード200確認
    end
  end

  describe "PageContent" do
    it "title tag check" do
      visit "/hoge"
      page.should have_title("hoge") # titleタグに"hoge"が入っているかを確認
    end
  end

end

テストを実行する

これでテストの準備が整いましたので、ターミナルからテストを実行します。

$ bundle exec rspec spec/requests/hoge.rb

こんな感じでRailsアプリケーションに対してRSpecでテストができます。