2

Я бил головой с 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' 

предыдущий тест работал нормально. Кто-нибудь когда-нибудь сталкивался с этим?

ответ

0

Вот что проблема была. Чтобы сделать это так, чтобы мои файлы с файлами файлов на самом деле не сохранялись в моей тестовой среде, я следил за этой статьей, http://jeffkreeftmeijer.com/2014/using-test-fixtures-with-carrierwave/#comment_768.

Здесь он говорит вам, чтобы добавить следующие строки в ваш файл test_helper

class CarrierWave::Mount::Mounter 
    def store! 
    # Not storing uploads in the tests 
    end 
end 

В сущности, это говорит среду тестирования не хранить загруженные светильники в любом месте. Во всяком случае, этот фрагмент кода плохо летает с добавлением основной ветви несущей волны для нескольких загрузок файлов. Я закончил раскувывать его и, несмотря на то, что хранит загруженные файлы, мои тесты проходят.

Смежные вопросы