LoginSignup
14
14

More than 5 years have passed since last update.

RailsでRspecを使用するための準備など

Last updated at Posted at 2015-09-01

RailsでRspecを使用するための準備など

新規のrailsプロジェクトを作る度に毎度調べながらやっていたので、備忘録的にまとめました。

Gemfileの設定

以下4つのgemを使用します。追記した後、bundle installを実行してください。

group :development, :test do
 ・
 ・
 ・
  gem 'rspec-rails'
  gem 'factory_girl_rails'
  gem 'guard-rspec', require: false
  gem 'terminal-notifier-guard'
end

これで今回使用する、Rspec, Guard, FactoryGirlはすべてインストールされます。

Rspecの初期設定

Rspecの初期設定を行っていきます。以下のコマンドで、設定ファイルを生成します。

~ bundle exec rails g rspec:install

これでrspecコマンドを実行することでテストを実行することができます。
scaffoldなどで適当なcontrollerを作って試していただければと。

~ bundle exec rspec

Guardによるテストの自動化

毎度rpsecコマンドを打つのは手間だと思いますので、Guardというgemを使って自動化してしまいます。
Guardはspecファイルを保存する度に、自動でテストが実行されます。

以下のコマンドで設定ファイルを生成します。

~ bundle exec guard init rspec

これでGuardfileというファイルが生成されているかと思います。
この中に監視対象のファイルを記載することで、実行ファイルを絞ることができます。

Guardの実行

では、実際にGuardを実行してみます。

~ bundle exec guard

これでguardが待機状態になるかと思います。この状態になったらspecファイルを変更し保存をかけてみてください。guardが自動でファイルの変更を検知し、テストを実行してくれます。

FactoryGirlによるテストデータの生成

ここまでで簡易的ではありますが、自動でrspecのテストを実行することができるようになったかと思います。
最後にテストで一番面倒な、テストデータの生成に役立つFactoryGirlを紹介します。

概要

FactoryGirlは先ほど説明した通り、テストデータの定義を簡易化してくれるためのgemです。
使い方の流れとしては、以下の通りです。

  1. spec/factories以下にファイルを作成し、テストデータを定義
  2. テストデータが必要な場面でファイルを読み込んで、使用(この時加工も可能)

テストデータの生成

以下のようにしてテストデータを定義していきます。

FactoryGirl.define do

  # factory名とModel名が一緒の場合
  factory :user do
    name "yu_0105"
    password "password here"
  end

  # factory名とModel名が異なる場合
  factory :admin, class: User do
     name "yu_0105"
     password "password here"
  end

end

テストデータの呼び出し

先ほど生成したfactoryを呼びためには以下のようにします。

user = FactoryGirl.create(:user)
# ハッシュを指定することで上書き可能
user = FactoryGirl.create(:user, { name: 'who?', password: 'password here' })

FactoryGirlは他にも様々なテストデータの定義の方法があります。他の手法に関しては、こちらのチートシートがとてもわかりやすいです。

参考

14
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
14