Controller spec unknown keyword: id

24,103

HTTP request methods will accept only the following keyword arguments params, headers, env, xhr, format

According to the new API, you should use keyword arguments, params in this case:

  it 'should show field' do
    get :show, params: { id: field.id }
    expect(response.status).to eq(200)
  end
Share:
24,103
user
Author by

user

Updated on July 05, 2022

Comments

  • user
    user almost 2 years

    I have simple action show

    def show
      @field = Field.find_by(params[:id])
    end
    

    and i want write spec for it

    require 'spec_helper'
    
    RSpec.describe FieldsController, type: :controller do
    
        let(:field) { create(:field) }
    
      it 'should show field' do
        get :show, id: field
        expect(response.status).to eq(200)
      end
    end
    

    but I have got an error

    Failure/Error: get :show, id: field
    
     ArgumentError:
       unknown keyword: id
    

    How to fix it?

  • mahi-man
    mahi-man almost 7 years
    I had this error start appearing after upgrading from Rails 4.2 to Rails 5.1 and this fixed it - thanks!
  • starfry
    starfry about 6 years
    Life Saver :) But where is this new API defined? I found this mention but it would be good to see where/when/why this change happened (if you know!)
  • Humayun Naseer
    Humayun Naseer over 3 years
    but in rails 6 im getting no routes matches