LoginSignup
0
0

More than 3 years have passed since last update.

Railsで単体テストを行うための下準備方法と主なgem

Posted at

初めに

Railsで単体テストで行っていくにあたって必要な下準備についてまとめました。
内容としてはgemのRSpecを使用していく場合で書いています。

この記事で使うgem

rspec-rails

Railsで単体テストを行う際に、主に使われるgem。
このgemを導入すれば単体テストを行うことができます。

以下あれば便利なgem(必須ではない)

factory_bot_rails

単体テストを行う際に使用するインスタンスをあらかじめ
登録しておくことができるgem。
各exampleの度にインスタンスを生成しなくて済むので
便利。なくても単体テストはできます。

rails-controller-testing

コントローラを単体テストする際に使用するgem。
導入することで、コントローラを単体テストする際に便利な
マッチャやメソッドが使用できるようになります。

※こちらのgemを使用するのはおすすめしません。gemとして古いものであるためです。
詳しくは以下の記事を参考にしてください。
https://qiita.com/t2kojima/items/ad7a8ade9e7a99fb4384
簡単な単体テストをする上では、大きな問題はないと思うので
rails-controller-testingを使用しています。

faker

単体テストを行う際に生成するインスタンスの値をランダムで
自動再生してくれるgemです。
インスタンスごとに自分で値を考える必要がないので便利です。

単体テスト下準備手順

1.単体テストを行うために必要となるgemを導入していきます。
Gemfileに以下のようにgemを追記します。
テストのため、開発、テスト環境であるgroup :development, :testに追記していきます。

gemfile
group :development, :test do
  gem 'rspec-rails'
  gem 'rails-controller-testing'
  gem 'factory_bot_rails'
  gem 'faker'
end

Gemfileに追記したので、ターミナルで以下のコマンドを
実行します。

$ bundle install

2.1.の段階だとまだrspecは使用できません。rspecを使用するには、別途インストールコマンドを実行する必要があります。
以下の用にコマンドを実行してください。

$ rails g rspec:install

コマンドを実行すると.rspecファイルが作成されるので
.rspecファイルに以下の文言を追記してください。

.rspec
--format documentation

※上記の文言の追記は単体テストを行う上で必須ではありませんが
追記することで、ターミナルでのテスト結果が見やすくなるので
追記しておくといいかもしれません。
詳しくは以下参考に
https://shinkufencer.hateblo.jp/entry/2019/01/21/233000

3.ここまでの手順で、単体テストを実行することができますが
下準備として単体テストで使うファイルを管理しやすいように
ディレクトリを作成していきます。

単体テストで使うファイルはspecディレクトリ以下に作成していきます。
管理しやすいよう以下の様にディレクトリを作成します。

-spec
|-models←モデルを単体テストするspecファイルを管理
|-comtrollers←コントローラ-を単体テストするspecファイルを管理
|-factories←factory_bot_railsでのインスタンスの値の設定をするファイルを管理

おわりに

ここまでの内容で、単体テストを行っていくための下準備を行うことができました。

単体テストを行うためのコードの書き方、構文につきましては他の記事を参考にしていただければと思います。
以下参考記事です。
https://qiita.com/jnchito/items/42193d066bd61c740612

・rspec-railsのGitHub README
https://github.com/rspec/rspec-rails

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0