1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ransackの検索機能をRSpecでテストする方法

Last updated at Posted at 2021-05-10

はじめに

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の記事を久々に書きましたが、説明を考えながら記事を書くと自分の思考も整理されてスッキリしました。
改めて、テストコードは重要だなと感じたので、少しでも皆さんのお役に立てればと思います。
拙い箇所が多々あるかとは思いますが、ご指摘等あればコメントいただけると幸いです。。。

1
3
1

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
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?