SAHARA

RailsでRSpec+Capybara+factory_girl+その他テスト系gemのインストール方法

更新回数:4回 | 2016/01/29更新
編集者:Thumb img 0

はじめに 

RailsでテストをしようとするとRSpec系を使うのが主流だと思うので、そのインストール方法をまとめます。

 基本的には、RSpec+Capybara+factory_girlを使います。

 最後の方にその他の便利なgemを書いてます。

インストール

まずはgemfileに追加。

group :development, :test do
 #test
 gem 'rspec-rails', '~> 3.0'
 gem 'capybara'
 gem 'factory_girl_rails'
 gem 'database_cleaner'
 gem 'guard-rspec'
 #以下便利gem。使う場合はコメント外す。
 #gem 'guard-livereload'
 #gem 'launchy' #save_and_open_page methodが使える。
 #gem 'growl' #テスト通知。growlをインストールしてあれば使える。
 #gem 'spring-commands-rspec' #テストの速度アップ
 #gem 'rb-fsevent' #macのみ
end

追加してbundle install。

rspec-rails

bin/rails generate rspec:install

でspecフォルダと中身を作ります。
 これでrspecは使えるようになります。
 テストを作る時、ファイル名を*_spec.rbとすることを忘れないようにします。


capybara

spec/rails_helper.rbに以下を追加。

require 'capybara/rails'

作成するテストファイルは上同様ファイル名を*_spec.rbにし、先頭に以下を付け加える。

require 'rails_helper'



factory_girl_rails

factory_girlはテストで使用する生成するデータを簡単に管理できます。

spec/rails_helper.rbに以下を追加します。

RSpec.configure do |config|
 config.include FactoryGirl::Syntax::Methods
 end

作成するデータをspec/factories/*.rbに配置すれば自動的に読み込んでくれるのでfactoriesフォルダを作りその中に配置したほうがいいでしょう。


 詳しい使い方はドキュメントを見てください。


poltergeist

 poltergeistを導入するとcapybaraでJavaScriptを有効にした状態でテストを可能にできます。

spec/rails_helper.rbに以下を追加。

require 'capybara/poltergeist'
Capybara.javascript_driver = :poltergeist

使い方は、js: true を付け加えると使えるようになります。

#例
describe 'いろいろPost操作' do
 it '投稿とか', js: true do
 #テスト 
 end
end


database_cleaner

database_cleanerはテスト後に作成されたデータを削除するためdatabase_cleanerをインストールします。

 spec/rails_helper.rbに以下を追加します。

config.before(:suite) do
  DatabaseCleaner.clean_with(:truncation)
end
config.before(:each) do
  DatabaseCleaner.strategy = :transaction
end
config.before(:each, :js => true) do
  DatabaseCleaner.strategy = :truncation
end
config.before(:each) do
  DatabaseCleaner.start
end
config.after(:each) do
  DatabaseCleaner.clean
end

spec/rails_helper.rbの"config.use_transactional_fixtures"をtrueからfalseに変えてください。

config.use_transactional_fixtures = false

これで自動的に、データベースがクリーンに維持されるようになります。


 guard-rspec

guardを使えば、ファイルが変更されたのを感知して自動でテスト実行できます。

guard init rspec

で使えるようになります。


 使い方は、

$ bin/bundle exec guard

で使えます。


その他便利なgem

guard-livereload

 viewを変更すると、自動的にブラウザを更新できる。すごく便利。

guard init livereload

でインストール完了。

 ブラウザ側にはlivereload.comから拡張機能をインストールしてきて、localhost:3000のページ上で拡張してブラウザに追加されたボタンを押せばシンクロされる。


aunchy

 テストコード内に、

save_and_open_page

を入れておけば、その時点のページをブラウザで開くことができる。デバッグに使う。


 growl

 自分のPCにgrowlというアプリケーションが入っていれば、使用できます。

guardのテストが完了すると、画面上に通知が表示されるようになりテストが捗ります。



spring-commands-rspec

 rspecをspring経由で実行すると速度が約半分になるので、導入するのをおすすめする。spring-commands-rspecはspringが入っていることが前提となるので入っていない場合はgemfileにspringを追加する。
以下のコマンドでspring経由でrspecを実行できるようにする。
 spring binstub --all
rspecを実行
spring rspec

guardと一緒に使用する場合は、Guardfileを以下のように少し変更する。

#####cmd: "bundle exec rspec"を以下のように変更する。
guard :rspec, cmd: "spring rspec" do
#####

発言はまだありません。
発言するにはログインもしくは、会員登録をしてください。