日志规范中参数数量错误(给定 1,预期为 2)的 Rspec 错误



我想测试日志方法,但我不知道为什么我有一个错误wrong number of arguments (given 1, expected 2)

我想测试的类:

class LogAdminData
def initialize(admin_obj:, type:, old_data:, new_data:)
@type = type
@old_data = old_data
@new_data = new_data.except(%w[created_at updated_at])
@admin_email = admin_obj.email
@admin_role = admin_obj.role
end
def call
log_admin_data!
end
private
attr_reader :type, :old_data, :new_data, :admin_email, :admin_role
def log_admin_data!
AdminPanelLog.update(
admin_email: admin_email,
admin_role: admin_role,
type: type,
new_data: new_data,
old_data: old_data,
)
end
end

这些是规格:

RSpec.describe LogAdminData do
include_context 'with admin_user form'
let(:type) { 'Update attributes' }
let!(:admin_user) { create :admin_user, :super_admin }
describe '.call' do
subject(:admin_logs) do
described_class.new(
admin_obj: admin_user,
type: type,
old_data: admin_user_form,
new_data: admin_user_form,
).call
end
it { is_expected.to be_successful }
end
end

我认为问题出在调用方法中,所以我更改了log_admin_data!并传递了attr_reader的所有参数,但这不是问题所在。

您必须更改AdminPanelLog.update调用AdminPanelLog.create因为您创建新记录而不是更新现有记录。

由于您有type为ActiveRecord单表继承保留的列,因此您应该通过为其设置另一列来"关闭"STI:

class AdminPanelLog < ApplicationRecord
self.inheritance_column = :we_dont_use_sti
end

最新更新