我有简单的动作秀

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

如何修复它?

推荐答案

HTTP请求方法将只接受以下关键字参数

根据新的API,您应该使用关键字参数,在本例中为params:

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

Ruby-on-rails相关问答推荐

在控制器操作中适当使用ActiveModel Dirty

Rails版本7.1.2:当验证失败且控制器发送422状态时,JS停止工作

如何使用继承类 (STI) 获取 Ruby on Rails 类中基类的实例

CanCanCan、Pagy 和 Meil​​iSearch,如何组合这 3 个 gem?

如何在测试期间为 Rails 应用程序启用 Rails.cache 会话对象

Ruby 3 动态关键字参数

rspec中日期时间结束时的分数是多少?

Rspec期望()与期望{}

在 Rails 6.1 升级后,作业(job)规范使用 Minitest::UnexpectedError 包装错误

正确更新其他列的更新列

Rails:用于创建固定长度 char(12) 列的迁移

rake assets:precompile try 连接到数据库

在一行中更改多个对象属性

Rails 文章助手 - a 或 an

如何在 Rails 中验证日期以使其在今天之后?

Ruby on Rails - link_to 按钮 / css

从 Rails 控制器获取主机名

在 Rails 3 中设置会话超时

未捕获的 ReferenceError:未定义 ReactDOM

错误:删除表违反外键约束.密钥 id 仍然从表中引用(很多)