Rails テストについて 5 (コントローラー編)
はじめに
テストに拒否反応があるので、まずは整理したいと思います。
整理していくにつれ、拒否反応がなくなってきたかも・・・
少しづつ記事を書いていきます。
Rails テストについて 1
Rails テストについて 2
Rails テストについて 3
Rails テストについて 4
もうすでにご存知の方、省略の仕方等ご存知でしたら、ご助言願います。
コントローラーテストで確認したいこと
- アクション内で定義するインスタンス変数の値が期待したものになるかを確認する
- アクションが呼ばれたあと、期待したビューが表示されるかを確認する
コントローラーテストのコードの書き方
- コントローラー内のメソッドで、あるアクションが呼ばれた際の挙動をチェック
- 1つのアクションにつき、先ほどの確認したいことの2つを確認する。
1. アクション内で定義するインスタンス変数の値が期待したものになるかを確認する
2. アクションが呼ばれたあと、期待したビューが表示されるかを確認する
ひとつのアクションに対して2つ以上のexample(it '' do ~ end)が必要となる。
describe ◯◯Controller do
describe 'HTTPメソッド名 #アクション名' do
it "インスタンス変数は期待した値?" do
"擬似的にリクエストを行ったことにするコードを書く"
"エクスペクテーションを書く"
end
it "期待するビューに遷移できる?" do
"擬似的にリクエストを行ったことにするコードを書く"
"エクスペクテーションを書く"
end
end
コントローラーテストのコードの書き方に関する注意
- 各アクションはそれぞれリクエストされる際のhttpメソッドが違う
- よって、それぞれ少しずつテストの書き方が異なる。
以下、Railsに定められている7つのアクションのうちhttpメソッドがgetであるアクションに関してのテストコードの書き方となります。
他アクションに関しては、随時追記していきます。
コントローラーテストの準備
Gemfileに追記
group :development, :test do
# Call 'byebug' anywhere in the code to stop execution and get a debugger console
gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
gem 'rspec-rails'
gem 'factory_bot_rails'
gem 'rails-controller-testing' ← 追記
end
そして、bundle install !!
Specファイルを作成(コントローラー用)
① specディレクトリ以下にcontrollersディレクトリを作成する。
② ①内に◯◯_controller_spec.rbを作成する。
- 今回は、groups_controller.rbのテストを行います。
- ということで、groups_controller_spec.rbを作成しました。
- 緑色になっているところです。
基本コードの記入
作成した◯◯_controller_spec.rbに以下コードを記入する。
require 'rails_helper'
describe ◯◯Controller do
end
groupsの場合
require 'rails_helper'
describe GroupsController do
end
テスト実行できるか確認
ターミナル
% bundle exec rspec spec
上記コマンドでも問題ないが、特定したテストファイルのみ実行することができる。
ターミナル
% bundle exec rspec spec/controllers/◯◯_controller_spec.rb
と出力されれば準備おkです! 今回はここまで!
テスト編、続きます!
(httpメソッドがgetで呼ばれるアクションのコントローラーテストに入っていきます!)
さいごに
日々勉強中ですので、随時更新します。
皆様の復習にご活用頂けますと幸いです。
Author And Source
この問題について(Rails テストについて 5 (コントローラー編)), 我々は、より多くの情報をここで見つけました https://qiita.com/raigakun/items/626c41d1f0d1d5c2bb3e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .