RSpecの準備
RSpecを利用してRailsアプリのテストコードを書いていく準備をします。
今回の準備では、RSpecだけでなくFactoryBotやFakerといったgemも同時に用意していきます。
Gemfileの編集
Gemfile
group :development, :test do
#省略
gem 'rspec-rails'
gem 'factory_bot_rails'
gem 'rails-controller-testing'
gem 'faker'
end
- rspec-rails
今回の要。RailsにてRSpecを使ってテストするのに必要です。 - factory_bot_rails
テスト用にダミーのインスタンスを作成するのに役立ちます。 - rails-controller-testing
Railsのコントローラーをテストするのに必要です。
とはいえ少し古いものらしいです。新しいgemについては今後の記事で。 - faker
インスタンス作成の際、多様なダミーデータを投入できるようになります。
今後他のgemも必要になってくるかもしれません。
一旦はモデルとコントローラーの単体テストを想定して準備しています。
Gemfileの変更ができたら忘れずインストールします。
####ターミナルからbundle installの実行
ターミナル
$ bundle install
####RSpecの利用準備
ターミナル
$ rails g rspec:install
このコマンドで、下記のようにRSpecに関するファイルが生成されます。
ターミナル
create .rspec
create spec
create spec/spec_helper.rb
create spec/rails_helper.rb
生成された.rspecファイルに以下の文を追記します。
.rspec
--format documentation
この追記で、テスト結果の表示のされ方が変わってきます。
追記前:
ターミナル
......
Finished in 2.4 seconds (files took 2.02 seconds to load)
6 examples, 0 failures
追記後:
ターミナル
Message
#create
can save
is valid with a message
is valid with an image
is valid with a message and an image
can not save
is invalid without a message and an image
is invalid without a group
is invalid without an user
Finished in 2.51 seconds (files took 3.65 seconds to load)
6 examples, 0 failures
このように、テスト結果の表示がかなり分かりやすくなります。
ターミナルからrspecを実行する際にオプションとして後ろに書き加えることもできますが、先にファイルに追記しておく方が楽かと思います。
####factory_botの書き方を省略
spec/rails_helper.rb
RSpec.configure do |config|
#下の文を追加
config.include FactoryBot::Syntax::Methods
end
こうすることで、factory_botでインスタンスを生成する記述が少し簡略化されます。
次の記事ではモデル、コントローラーの単体テストについて書きたいと思います。