LoginSignup
27
27

More than 5 years have passed since last update.

Ruby on Rails で Rspec+Capybara+Spork+Guard+factory_girl+simplecov 環境を構築するときのメモ

Last updated at Posted at 2012-09-10

rails new appname -T ではじめる

TEST:Unit 関連が生成されなくなる

Gemfileに必要gemを追記

gem 'twitter-bootstrap-rails'

group :development, :test do
  gem 'rspec-rails'
  gem 'capybara'
  gem "jasmine-rails"
  gem "factory_girl_rails"
  gem 'spork'
  gem 'growl'
  gem 'guard'
  gem 'guard-bundler'
  gem 'guard-rspec'
  gem 'guard-spork'
  gem 'rb-fsevent',require: false
  gem 'simplecov'
  gem 'simplecov-rcov'
end
$ bundle install

rpsecの準備

$ rails g rspec:install
create  .rspec
create  spec
create  spec/spec_helper.rb

sporkの準備

$ spork --bootstrap

spec/spec_helper.rb を編集してもろもろ準備

関連内容

capybara,spork,simplecov

spec/spec_helper.rb
# step.1
# 約50行目の
# This file is copied to spec/ when you run 'rails generate rspec:install'
# より下のコード(sporkをインストールする前のspec_helper.rbのコード)をすべて
Spork.prefork do
# --ここ--
end
# に貼り付ける。

# step.2
# Spork.prefork do 内先頭付近に、factory_girlとcapybaraの設定追加。
# これでrails g の時にいろいろ勝手に作ってくれる
require 'rspec/rails'
require 'rspec/autorun'
require 'factory_girl_rails' # add
require 'capybara/rspec' # add

# step.3
# Spork.each_run do へFactoryGirl.reloadを追記して、factory_girl(テストデータ)関連のファイルが更新された際に読み込みようにする
Spork.each_run do
  FactoryGirl.reload
end

# step.4
# カバレッジのための設定を追記

# Spork.prefork do の直下に追記
Spork.prefork do
  unless ENV['DRB']
    require 'simplecov'
  end

# Spork.each_run do の直下に追記
Spork.each_run do
  if ENV['DRB']
    require 'simplecov'
  end

aplicationのrootに.simplecovファイルを作成

SimpleCov.start 'rails' do
  add_filter "/spec/"
end

.rspecファイルの編集

--color
--drb
--format documentation # rspecの出力をドキュメント形式にする。お好みで。

guardの設定

Guardfileの生成

$ bundle exec guard init spork
$ bundle exec guard init rspec

Guardfileを少々修正

# guard 'rspec', :version => 2 do を以下のように修正
guard 'rspec', :version => 2, cli: '--drb', all_after_pass: false, all_on_start: false do

起動実験

scaffoldでもして、自動でファイル生成されているかを確かめる

scaffold

$ rails g scaffold user name:string email:string

      invoke  active_record
      create    db/migrate/20120910022400_create_users.rb
      create    app/models/user.rb
      # factory_girl関連の自動生成を確認↓
      invoke    rspec
      create      spec/models/user_spec.rb
      invoke      factory_girl
      create        spec/factories/users.rb
      invoke  resource_route
       route    resources :users
      invoke  scaffold_controller
      create    app/controllers/users_controller.rb
      invoke    erb
      create      app/views/users
      create      app/views/users/index.html.erb
      create      app/views/users/edit.html.erb
      create      app/views/users/show.html.erb
      create      app/views/users/new.html.erb
      create      app/views/users/_form.html.erb
      invoke    rspec
      create      spec/controllers/users_controller_spec.rb
      create      spec/views/users/edit.html.erb_spec.rb
      create      spec/views/users/index.html.erb_spec.rb
      create      spec/views/users/new.html.erb_spec.rb
      create      spec/views/users/show.html.erb_spec.rb
      create      spec/routing/users_routing_spec.rb

      # capybara関連の自動生成を確認↓
      invoke      rspec
      create        spec/requests/users_spec.rb
      invoke    helper
      create      app/helpers/users_helper.rb
      invoke      rspec
      create        spec/helpers/users_helper_spec.rb
      invoke  assets
      invoke    coffee
      create      app/assets/javascripts/users.js.coffee
      invoke    scss
      create      app/assets/stylesheets/users.css.scss
      invoke  scss
      create    app/assets/stylesheets/scaffolds.css.scss

マイグレーションの実行

$ rake db:create
$ rake db:migrate RAILS_ENV=test

guardの実行

bundle exec guard

適当にファイルを編集してみて、自動的に更新されテストが実行されたら成功
カバレッジの結果は/coverage/index.htmlとして出力されているはず。

参考サイト・URL

27
27
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
27
27