※2022年から技術系の記事は個人ブログに投稿しております。ぜひこちらもご覧ください→yamaday0u Blog
Ruby on Railsのテスト用のgemであるRSpecの導入と関係するgemについて整理します。
RSpecとは
Ruby on Railsのテストコードを書くために用いられるgemです。
実際のgem名は「rspec-rails」です。
ユーザーの新規登録やログイン、メッセージの投稿や編集などの機能をテストするために使用します。
Rubyには標準でmini_testという別のテスト用Gemが導入されているのですが、開発現場ではRSpecが主流だそうです。
RSpecのインストール
Gemfile
に以下のように記述し、ターミナルでbundle install
を入力します。
#group :development, :testというグループの中に記述する。
group :development, :test do
gem 'rspec-rails', '~> 4.0.0'
end
$ bundle install
RSpecの設定をする
ターミナルで以下のとおり入力して、ディレクトリとファイルを生成します。
$ rails g rspec:install
#上記実行後、下記のディレクトリとファイルが生成される
create .rspec
create spec
create spec/spec_helper.rb
create spec/rails_helper.rb
.rspec
ファイルに以下の記述をします。テストコードの実行結果をターミナル上に可視化するために記述します。
--require spec_helper
--format documentation #この一文を追加
RSpecについてはここまです。
RSpecと関係の深いgem
RSpecとよく一緒に使用するgemとしてFactoryBotとFakerがあります。
FactoryBotとは
インスタンスをまとめることができるgemで、他のファイルであらかじめ各クラスのインスタンスに定める値を設定しておき、各テストコードで使用します。
RSpecと同様にGemfileのgroup :development, :test
というグループの中に記述してからインストールします。
group :development, :test do
gem 'factory_bot_rails'
end
$ bundle install
簡単な紹介になりますが、FactoryBotは以下のように記述して使います。※アプリにUsersテーブルがあると想定
FactoryBot.define do
factory :user do
name {"sample"}
email {"sample@mail"}
password {"sample777"}
end
end
このように記述することで、テストで使用するユーザーの情報を事前に用意しておくことができます。
###Fakerとは
ランダムな値を生成するgemで,メールアドレス、人名、パスワードなどのランダムな値を生成してくれます。
RSpecと同様にGemfileのgroup :development, :test
というグループの中に記述してからインストールします。
group :development, :test do
gem 'faker '
end
$ bundle install
Fakerはこんな感じでランダムな値を生成します。
FactoryBot.define do
factory :user do
name { Faker::Name.initials(number: 5) }
email { Faker::Internet.free_email }
password { Faker::Internet.password(min_length: 6) }
end
end
FactoryBotとFakerでできること
テストコードを実行するたびにランダムな値でインスタンスを生成することができます。
テストをするアプリにユーザー管理機能がある場合、emailなどのカラムをテーブルに用意されていると思いますが、複数のテストを行う際に、「すでにemailの重複したインスタンスが存在する」といったような意図しない形でテストエラーが出てしまうことを防ぐのに役立ちます。
今回はここまでで、次の記事でRSpecを使った単体テストについて取り上げたいと思います。
RSpecのシリーズ記事
第1回:RSpecの導入&関係の深いgemについて ※この記事
第2回:RSpec:モデルの単体テストの記述例
##参考資料
RSpecの公式GitHub
FactoryBot(factory_bot_rails)の公式GitHub
Fakerの公式GitHub