我正在尝试测试从 CSV 导入产品的操作。
我能够通过第一个测试。以字符串的形式params[:file]
进入控制器,"#<StringIO:0x007fc0d40a0bd0>"
这不会使我的测试失败,但这不是正确的行为。
第二个测试我收到以下错误
private method `gets' called for #<ActionDispatch::Http::UploadedFile:0x007fd391de0a00>
这是我的规范(内容是 CSV 内容)
# spec/controllers/products_controller_spec.rb
describe 'POST import with file' do
before do
post :import, file: file
end
context 'with invalid data' do
subject { Spree::Product.count }
let(:file) { StringIO.new("") }
it { is_expected.to eq 0 }
end
context 'with valid data' do
subject { Spree::Product.count }
let(:file) { ActionDispatch::Http::UploadedFile.new(params) }
let(:params) do
{
original_filename: 'file.csv',
content_type: 'text/csv',
tempfile: StringIO.new(content)
}
end
it { is_expected.to eq 1 }
end
end