【问题标题】:Controller spec unknown keyword: id控制器规格未知关键字:id
【发布时间】:2017-10-03 11:23:06
【问题描述】:

我有简单的动作表演

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

我想为它写规范

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

但我有一个错误

Failure/Error: get :show, id: field

 ArgumentError:
   unknown keyword: id

如何解决?

【问题讨论】:

  • 这就是 Rails 4 的语法。在 Rails 5 及以上版本中,您需要指定“params”关键字。

标签: ruby-on-rails ruby rspec ruby-on-rails-5 rspec-rails


【解决方案1】:

HTTP 请求方法将只接受以下关键字参数 params, headers, env, xhr, format

根据新的 API,您应该使用关键字参数,在这种情况下 params

  it 'should show field' do
    get :show, params: { id: field.id }
    expect(response.status).to eq(200)
  end

【讨论】:

  • 从 Rails 4.2 升级到 Rails 5.1 后,我开始出现这个错误,这修复了它 - 谢谢!
  • Life Saver :) 但是这个新的 API 是在哪里定义的呢?我找到了this mention,但很高兴看到发生这种变化的地点/时间/原因(如果你知道的话!)
  • 但是在 Rails 6 中我没有找到任何路线匹配
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多