【问题标题】:Rails 4 Paperclip FactoryGirl file uploadingRails 4 Paperclip FactoryGirl 文件上传
【发布时间】:2015-07-27 10:40:11
【问题描述】:

我有一个 FactoryGirl :product factory 使用fixture_file_upload 设置image,这是一个回形针附件。

    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中提到的解决方案

您是否以其他方式解决了这个问题?

【问题讨论】:

  • 您提供的链接是我认为最好的方式,我使用相同的方式,我有一个名为upload_test 的文件夹,其中附件位于其中,我使用相同的方式从中删除了所有文件。
  • @Deep 是的,你说服我使用相同的方法。

标签: ruby-on-rails rspec paperclip factory-bot bdd


【解决方案1】:

Deep 也提到的解决方案是:

  • 指定测试环境中的回形针应将文件上传到文件夹test_uploads
  • 修改 factory_girl 工厂以上传前任的夹具。 spec/fixtures/images/filename.extension,
  • rails_helper.rb 中添加一个毕竟清理块

在代码中:

config/environments/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'
  }
  ...

spec/factories/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
  ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-16
    • 2013-09-04
    • 1970-01-01
    • 2014-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多