控制器规格未知关键字:id
Posted
技术标签:
【中文标题】控制器规格未知关键字:id【英文标题】:Controller spec unknown keyword: 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”关键字。 【参考方案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 中我没有找到任何路线匹配以上是关于控制器规格未知关键字:id的主要内容,如果未能解决你的问题,请参考以下文章