问题描述
在我的Rails 6应用中,我想在ActiveAdmin设置中编写collection_action
以下的规范:
admin/users.rb
collection_action :import_csv,method: :get do
file = ::AdminLogData::CsvAdminLogGenerator.new.call
send_data file.encode('UTF-8'),type: 'text/csv; charset=UTF-8; header=present',disposition: 'attachment; filename=admin_logs.csv'
end
此方法负责创建管理日志。为此,我编写了规范:
describe Admin::UsersController,type: :controller do
include Devise::Test::ControllerHelpers
before { sign_in admin }
let!(:admin) { create(:admin_user) }
describe '#import_csv' do
let(:csv_admin_log_generator_instance) { instance_double(::AdminLogData::CsvAdminLogGenerator) }
before(:each) do
allow(::AdminLogData::CsvAdminLogGenerator).to receive(:new) { csv_admin_log_generator_instance }
allow(csv_admin_log_generator_instance).to receive(:call)
get :index
end
it 'accepts send_data' do
get :import_csv
expect(csv_admin_log_generator_instance).to receive(send_data)
end
end
1) Admin::UsersController#import_csv accepts send_data
Failure/Error:
send_data file.encode('UTF-8'),disposition: 'attachment; filename=admin_logs.csv'
NoMethodError:
undefined method `encode' for nil:NilClass
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)