【问题标题】:RSpec controller test - ActionController::UnfilteredParameters: unable to convert unpermitted parameters to hashRSpec 控制器测试 - ActionController::UnfilteredParameters:无法将未经许可的参数转换为哈希
【发布时间】:2020-09-08 00:06:38
【问题描述】:

在我的 Rails 6 应用程序中,我正在尝试测试允许管理员用户在不提供用户密码的情况下更新用户数据的控制器方法。所有操作都在 ActiveAdmin 中运行。

admin/users.rb

  controller do
    def update
      model = :user

      %w[password password_confirmation].each { |p| params[model].delete(p) } if params[model][:password].blank?

      super
    end
  end

基于this页面我尝试编写规范:

admin/users_spec.rb

  describe 'PUT update' do
    let(:user) { create(:user, :random_email) }

    let(:valid_attributes) do
      ActionController::Parameters.new(
        {
          user: {
            email: 'michael.kelso@example.com',
            password: '',
          },
        },
      )
    end

    before do
      put :update, params: { id: user.id, user: valid_attributes }
    end

    it 'update user' do
      expect(user.reload.email).to eq('michael.kelso@example.com')
    end
  end
end

我应该怎么做才能让这个测试变成绿色?

【问题讨论】:

    标签: ruby-on-rails ruby rspec


    【解决方案1】:

    您仍然可以为 activeadmin 添加强大的参数。 使用方法 permit_params 方法如:permit_params :title, :content, :publisher_id

    activeadmin 强参数文档: https://github.com/activeadmin/activeadmin/blob/master/docs/2-resource-customization.md#setting-up-strong-parameters

    这篇文章与这个相关:https://github.com/activeadmin/activeadmin/blob/master/docs/2-resource-customization.md#setting-up-strong-parameters

    【讨论】:

      猜你喜欢
      • 2017-10-29
      • 1970-01-01
      • 2016-12-10
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多