加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Rails 4 Paperclip FactoryGirl文件上传

发布时间:2020-12-17 04:02:24 所属栏目:百科 来源:网络整理
导读:我有一个FactoryGirl:产品工厂,它使用fixture_file_upload来设置图像,这是一个Paperclip附件. image { fixture_file_upload "#{Rails.root}/spec/fixtures/images/product.png",'image/png' } fixture_file_upload运行正常,但每次测试使用工厂创建新产品时,
我有一个FactoryGirl:产品工厂,它使用fixture_file_upload来设置图像,这是一个Paperclip附件.

image { fixture_file_upload "#{Rails.root}/spec/fixtures/images/product.png",'image/png' }

fixture_file_upload运行正常,但每次测试使用工厂创建新产品时,Paperclip都会在publicproducts /< id> /original.png中创建一个新文件.这是问题..在每次测试运行中填写文件夹publicproducts是不可接受的.

我能想到的第一个解决方法是https://github.com/carrierwaveuploader/carrierwave/wiki/How-to:-Cleanup-after-your-Rspec-tests中提到的解决方案

你以另一种方式解决了这个问题吗?

解决方法

Deep提到的解决方案是:

>指定测试环境中的回形针应将文件上传到文件夹test_uploads,
>修改factory_girl工厂以从ex上传夹具.规格/装置/图像/ filename.extension,
>在rails_helper.rb中添加一个所有清理块

在代码中:

配置/环境/ test.rb

...
  config.paperclip_defaults = {
    path: ':rails_root/test_uploads/:class/:id/:attachment/:filename.:extension',url: ':rails_root/test_uploads/:class/:id/:attachment/:filename.:extension'
  }
  ...

规格/工厂/ products.rb

image { fixture_file_upload "#{Rails.root}/spec/fixtures/images/product.png",'image/png' }

rails_helper.rb

...
  include ActionDispatch::TestProcess

  config.after(:all) do
    if Rails.env.test?
      test_uploads = Dir["#{Rails.root}/test_uploads"]
      FileUtils.rm_rf(test_uploads)
    end
  end
  ...

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读