2
3

More than 5 years have passed since last update.

RSpecをRailsプロジェクトに導入する

Last updated at Posted at 2017-06-15

はじめに:writing_hand:

弊社プロジェクトでRSpecを導入することになったので、
そのノウハウをとりあえず共有。
百番煎じだろうと役に立つ可能性は...あります:point_up:

必須設定:gear:

基本的にGemを追加するだけで使用可能

Gemの追加

Gemfile
group :development, :test do
  gem "rspec-rails"
  gem "factory_girl_rails"
  gem "guard-rspec"
  gem "spring-commands-rspec"
end

group :test do
  gem "faker"
  gem "database_cleaner"
  gem "launchy"
  gem "selenium-webdriver"
  gem "shoulda-matchers"
end

インストール

$bundle exec rails generate rspec:install
以下が追加される
create  .rspec
create  spec
create  spec/spec_helper.rb

これだけで使える状態まで持っていける。

便利な設定:robot:

テスト結果をドキュメントっぽくする

デフォルトのテスト結果はこんな感じ
[f:id:oredeki:20170614233231p:plain]

.rspecに以下を追記するとドキュメントっぽくなる

.rspec
--format documentation

[f:id:oredeki:20170614233255p:plain]

不要なファイルを生成しないための設定

/config/application.rb
config.generators do |g|
  g.test_framework :rspec,
    fixtures: true,
    view_specs: false,
    helper_specs: false,
    routing_specs: false,
    controller_specs: true,
    request_specs: false
  g.fixture_replacement :factory_girl, dir: "spec/factories"
end

各ジェネレート:pick:

RSpecをインストールしている場合、railsのジェネレートコマンドを使うとそれに準じたテストファイルも作成される。

Model

$rails g model User name:string
以下が追加される
Running via Spring preloader in process 34465
      invoke  active_record
      create    db/migrate/20170612075328_create_users.rb
      create    app/models/user.rb
      invoke    rspec
      create      spec/models/user_spec.rb
      invoke      factory_girl
      create        spec/factories/users.rb

Contloller

$rails g controller UserList index
以下が追加される
Running via Spring preloader in process 61960
      create  app/controllers/user_list_controller.rb
       route  get 'user_list/index'
      invoke  erb
      create    app/views/user_list
      create    app/views/user_list/index.html.erb
      invoke  rspec
      create    spec/controllers/user_list_controller_spec.rb
      invoke  helper
      create    app/helpers/user_list_helper.rb
      invoke    rspec
      invoke  assets
      invoke    coffee
      create      app/assets/javascripts/user_list.coffee
      invoke    scss
      create      app/assets/stylesheets/user_list.scss
2
3
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
2
3