【Rails】RSpecによるテスト 1.テストの準備


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でインスタンスを生成する記述が少し簡略化されます。


次の記事ではモデル、コントローラーの単体テストについて書きたいと思います。