はじめに
ransackの検索機能をRSpecにてテストする際に、書き方を検索したが思ったような記事がヒットしなかったので備忘録として記事を書きます。
この記事の内容
- ransackをRSpecでテストの実施
Companyテーブル構成
Column | type |
---|---|
name | string |
category | integer |
テストコード
RSpec.describe '#index', type: :request do
describe '企業名検索のテスト' do
context '正しいパラメータが渡されている場合' do
it '検索後の対象データに想定している内容があること' do
#空のインスタンス変数を作る
@params = {}
#インスタンス変数に値を入れる
@params[:q] = { name_cont: 'test2' }
#検索メソッドに値を入れた変数を渡して、結果を変数に入れる
@q = Company.ransack(@params)
#検索結果のリザルトを比較用の変数にいれる
@companies = @q.result
#検索結果と比較する
expect(@companies) == ({ name: 'test2' })
end
context '不正なパラメータが渡されている場合' do
it '検索後の対象データに想定している内容がないこと' do
@params = {}
@params[:q] = { name_cont: 'test2' }
@q = Company.ransack(@params)
@companies = @q.result
expect(@companies) != ({ name: 'テスト2' })
end
end
end
end
end
コードの説明
コードの説明はコメントアウトをご確認ください。
RSpecのcontextやitは下記URLのサイトがわかりやすかったです。
https://qiita.com/jnchito/items/42193d066bd61c740612
まとめ
Qiitaの記事を久々に書きましたが、説明を考えながら記事を書くと自分の思考も整理されてスッキリしました。
改めて、テストコードは重要だなと感じたので、少しでも皆さんのお役に立てればと思います。
拙い箇所が多々あるかとは思いますが、ご指摘等あればコメントいただけると幸いです。。。