【发布时间】:2016-01-05 02:34:42
【问题描述】:
我一直在用 Carrierwave 敲我的头。通过将 Carrierwave 的主分支添加到我的 Gemfile 中,我终于能够让载波上传多个文件:
gem 'carrierwave', github:'carrierwaveuploader/carrierwave'
我将它用于一个名为 Product 的模型,我就是这样做的。 产品.rb
class Product < ActiveRecord::Base
mount_uploaders :avatar, ProductUploader
end
而且我基本上遵循了规则,并且能够上传多个文件,同时让每个文件遍历我的 products_controller.rb 中的 create 方法,并为每个正在上传的文件创建一个新的 Product 实例。
现在。测试来了。以前,当我只能上传一个文件时,我可以使用,
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'
之前的测试运行良好。有没有人遇到过这种情况?
【问题讨论】:
标签: ruby-on-rails ruby unit-testing carrierwave