久しぶりに Rails でテストの環境作る

プライベートで作ってた Rails のアプリを久しぶりに改造しようと思ったら、テスト全く書いて無くて死にそうになった。。集中して開発してる時はいいけど、やっぱダメですね。

設定したもの

  • RSpec
  • FactoryGirl
  • spring
  • direnv

Gemfile

group :development do
  gem 'pry-byebug', group: 'test'
  gem 'spring'
  gem 'tapp-awesome_print', group: 'test'
end

group :test do
  gem 'database_rewinder'
  gem 'factory_girl_rails', group: 'development'
  gem 'fuubar', '~> 2.0.0.beta'
  gem 'rspec-rails'
  gem 'spring-commands-rspec'
end

prytapp も使いたいので追加

RSpec

$ rails generate rspec:install

spec_helper.rb, rails_helper.rb が生成される。

$ bundle binstubs rspec-core

bin/rspec を追加

DatabaseRewinder

spec/rails_helper.rb

  config.before :suite do
    DatabaseRewinder.clean_all
  end

  config.after :each do
    DatabaseRewinder.clean
  end

FactoryGirl

spec/rails_helper.rb

-# Dir[Rails.root.join('spec/support/**/*.rb')].each { |f| require f }
+Dir[Rails.root.join('spec/support/**/*.rb')].each { |f| require f }

spec/support/factory_girl.rb

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

  config.before :suite do
    begin
      DatabaseRewinder.start
      FactoryGirl.lint
    ensure
      DatabaseRewinder.clean
    end
  end
end

spring

$ bundle exec spring binstub --all

direnv

bin って打つのを省略します。

$ export EDITOR=vi
$ direnv edit .

エディタが開くので .envrc に以下を記述

export PATH=$PWD/bin:$PATH

とりあえずこれで書き始める事ができました。capybara 系はまた書くときに。