Railsのテスト関連。インストール方法まとめ 便利なgemあり
[!注意!]最新版はこちらに書いています。
はじめ
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をインストールしてあれば使える。 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フォルダを作りその中に配置したほうがいいでしょう。
詳しい使い方は以下を見てください。
File: GETTING_STARTED — Documentation for factory_girl (4.5.0)
database_cleaner
database_cleanerはテスト後に作成されたデータを削除するためdatabase_cleanerをインストールします。
spec/rails_helper.rbに以下を追加します。
#db_cleaner config.before(:suite) do DatabaseCleaner.strategy = :transaction DatabaseCleaner.clean_with(:truncation) end config.before(:each) do DatabaseCleaner.start end config.after(:each) do DatabaseCleaner.clean end
これで自動的に、データベースがクリーンに維持されるようになります。
guard-rspec
guardを使えば、ファイルが変更されたのを感知して自動でテスト実行できます。
$ guard init rspec
で使えるようになります。
使い方は、
$ bin/bundle exec guard
で使えます。
その他便利なgem
guard-livereload
github.com
viewを変更すると、自動的にブラウザを更新できる。すごく便利。
$ guard init livereload
でインストール完了。
ブラウザ側には
How do I install and use the browser extensions?
から拡張機能をインストールしてきて、localhost:3000のページ上で拡張してブラウザに追加されたボタンを押せばシンクロされる。
まとめ
guard-livereloadなんかは最近知って、すごく便利だなと思いました。
ブラウザとシンクロさせるやり方は他にもたくさんありいろいろ試してみましたが、この方法が1番シンプルで使いやすいと思います。