RSpecとFactoryBotのインストール【rails】

はじめに

railsアプリにrspecとFactoryBotをはじめてインストールしたので参考になれば

導入の手順

1.Gemfileに記述 2.bundle install 3.RSpecのインストール 4.その他設定

 1.Gemfileに記述

group :development, :test do
  gem 'rspec-rails'
  gem 'factory_bot_rails'
end

テスト環境だけでなく、開発環境でもrails console等で動作確認が行えるため、開発環境にも導入します。

 2.bundle install

$ bundle install --path vendeor/bundle

プロジェクトごとにGemを管理するために、「--path vendor/bundle」をつけてインストールします。

※これは正直どっちでもいいようです。

※--path vendor/bundleをつけてインストールした場合は下記の対応をします。

vender/bundle配下のrubyライブラリを.gitignoreに追加します。

/vendor/bundle/

 3.RSpecをインストール

$ bundle exec rails generate rspec:install
      create  .rspec    ※RSpec用の設定ファイル
      create  spec    ※今後各々が作成するspecファイルを格納するディレクトリ
      create  spec/spec_helper.rb  ※下記2つはRSpecの動作等をカスタマイズするヘルパー
      create  spec/rails_helper.rb

 4.その他設定

RSpecのテストの結果をわかりやすく出力させるために、 先程作成された、「.rspec」ファイルに下記のように追加。

--require spec_helper
--format documentation ※←これ

この項目を記載することで、どのテストがパスしたのか、どのテストが失敗したのかがわかりやすくなります。

FactoryBotって何??

FactoryBotとは、テストデータを作成する手助けをしてくれるGemです。

テストデータを作成するのが簡単になるだけでなく、 コードも簡潔になるので、テストコードのリファクタリングにもなります。

FactoryBot.define do
  factory :user do
    sequence(:email) { |n| "test#{n}@example.com" } 
    password { "password" }
    password_confirmation { "password" }
  end
end

例えば上記のように記載すると、 specファイルで下記のように記述するだけで、 テストユーザーが作成されます。

※ちなみに上記のファイルは「bundle exec rails g factory_bot:model user」で作られます。

FactoryBot.create(:user)

さらに、簡潔に記述することもできます!

RSpec.configure do |config|
  config.include FactoryBot::Syntax::Methods ※←これ
end

上記の項目を追加すると、 先程の「FactoryBot.」の部分を省略できるようになります。

FactoryBot.create(:user)
↓↓
create(:user) ※こんなに簡潔に!

参考

Everyday Rails - RSpecによるRailsテスト入門

※間違いなどあればコメントください!