前提・実現したいこと
現在Rspecでコントローラーのテストを行っているのですが、Ransackの検索テストでエラーが発生します。
自分一人では解決に至らなかったので質問させていただきます。
どなたかアドバイス等いただけると幸いです。
発生している問題・エラーメッセージ
Failure/Error: @companies[:q][:name_cont] = 'test1' NoMethodError: undefined method `[]' for nil:NilClass # ./spec/requests/companies_request_spec.rb:12:in `block (3 levels) in <top (required)>'
該当のソースコード
companies_controller.rb
def index @q = Company.ransack(params[:q]) @companies = @q.result.page(params[:page]) end
factories/companies.rb
FactoryBot.define do factory :from_company, class: 'Company' do name { Faker::Company.name } category { Faker::Number.within(range: 0..10) } end factory :to_company, class: 'Company' do name { Faker::Company.name } category { Faker::Number.within(range: 0..10) } end factory :company_name, class: 'Company' do sequence(:name) { |n| "test#{n + 1}"} category { Faker::Number.within(range: 0..10) } end end
companies_request_spec.rb
require 'rails_helper' RSpec.describe 'Companies', type: :request do let(:companies) { create_list(:company_name, 10) } #検索用のデータ it '検索後の対象データに想定している内容があること' do @companies = Hash.new @companies[:q] = Hash.new @companies[:q][:name] = 'test2' expect(@companies).to eq(:companies) end end
補足情報(FW/ツールのバージョンなど)
Rails 6.0.3.4
ruby 2.6.5p114
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。