Я бил головой с Carrierwave. Я, наконец, смог получить несущую волну для загрузки нескольких файлов, добавив мастер ветвь для Carrierwave моей Gemfile:CarrierWave Multiple File Upload Rails Unit Testing
gem 'carrierwave', github:'carrierwaveuploader/carrierwave'
Я использовал его для модели под названием продукта, и я это сделал. Product.rb
class Product < ActiveRecord::Base
mount_uploaders :avatar, ProductUploader
end
И я в основном следовал правилам и был в состоянии загрузить несколько файлов, имея каждый файл итерацию по методу создания в моем products_controller.rb
и создание нового экземпляра продукта для каждого загружаемого файла.
Теперь. Вот Тестирование. Раньше, когда только один файл был загружается, я был в состоянии использовать,
test "should create product" do
login
excel_filename = 'files/product_create_test.xls'
file = fixture_file_upload(excel_filename, 'application/excel')
assert_difference('Product.count') do
post :create, product: {:file_url => file}
end
Но теперь, после добавления возможности загружать несколько файлов, похоже, fixture_file_upload не работает должным образом. Я получаю эту ошибку:
ProductsControllerTest#test_should_create_product:
ArgumentError: wrong number of arguments (2 for 0)
test/controllers/products_controller_test.rb:54:in `block (2 levels) in <class:ProductsControllerTest>'
test/controllers/products_controller_test.rb:53:in `block in <class:ProductsControllerTest>'
Я не уверен, как идти вокруг этого. Как я уже сказал, когда у меня было
gem 'carrierwave'
предыдущий тест работал нормально. Кто-нибудь когда-нибудь сталкивался с этим?