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テスト入門
※間違いなどあればコメントください!