【Rails】Rspecの環境構築手順をざっくりまとめてみた
1.この記事をなぜ書いたか
Rspecを勉強して学んだことをまとめるために書きました。
今すぐRspecの環境構築手順を見たい方は、4章から見ることをオススメします。
記事の中で間違いがある場合、コメント頂けると嬉しいです。
2.そもそもRspecとは何か?
Rspecとは、「プログラムの振る舞い」を記述するためのドメイン特化言語(DomainSpecific Language:DSL)を提供するテストフレームワークのことです。 ドメイン特化言語とは、特定のドメイン(問題領域)を記述するために設計された言語です。Rspecの場合、特定のドメインは「開発対象のプログラムの振舞い」を表します。
そして、Rspecが提供するDSLを使用してテストコードを書くことによって、Railsアプリケーションの挙動をテストすることができます。
3.Rspecとminitestの違いとは?
テスト機能を提供するフレームワークの1つに、Ruby標準のminitestがあります。
minitestとRspecの大きな違いは、minitestが一般的なテストフレームワークなのに対し、Rspecは様々なテスト関連ライブラリや周辺ツールとの連携を積極的に行い、「統合テスティング環境」になることを目指すテストフレームワークであるところです。
もしminitestについてもっと知りたい方は以下のサイトがオススメです。
上のサイトを参考にする限り、minitestでRspecと同じことを実現する場合、時間がかかることが分かりました。個人的には性能の比較は重視してなく、テストコードの見やすさの点でRspecの方が優れてると感じました。
4.Rspecの環境構築
以下にRspecの環境構築手順を示します。
-
rspec-rails
をGemfileに書きます。FactoryBotもテストで使用したいので、factory_bot_rails
も一緒にインストールします。
group :development, :test do
gem 'rspec-rails', '~> 4.0.0' #Rails 5.xでRspecを使用する場合、このようにバージョン指定する。
gem 'factory_bot_rails'
end
ちなみに、Railsのバージョンに合わせて、どのバージョンのRspecをインストールするかはGithubで確認できます。
- Gemをインストールします。
bundle install
- 以下のコマンドを実行します。
rails g rspec:install
- コマンドを実行することで、
spec
ディレクトリと設定ファイル(.rspec
,spec_helper.rb
,rails_helper.rb
)が生成されることを確認します。
create .rspec
create spec
create spec/spec_helper.rb
create spec/rails_helper.rb
- テストの実行結果の表示を読みやすくするために、
.rspec
に-format documentation
を書きます。
--format documentation
-
vendor/bundle
以下に取得したRubyのライブラリをリモートリポジトリにプッシュしたくないです。そのため、.gitignore
に/vender/bundle
を書きます。
/vendor/bundle
-
spec/support/
配下のファイルを読み込むために、以下の一文のコメントアウトを外します。
Dir[Rails.root.join('spec', 'support', '**', '*.rb')].each { |f| require f }
-
FactoryBot.
を書いてインスタンスを生成するのは面倒なので、rails_helper.rb
に以下の記述をします。
RSpec.configure do |config|
config.include FactoryBot::Syntax::Methods
end
- 特定のテストケースのみ実行できるようにしたいので、以下のコードを
spec_helper.rb
に追加します。
RSpec.configure do |config|
config.filter_run_when_matching :focus
end
- 終了
5.終わり
Rspecの環境構築は意外とめんどくさいと感じました笑。
この記事が少しでも役に立てば幸いです!
6.参考文献
Discussion