3

运行capybara功能规范时,我可以看到许多由factory_girl. 我认为,这些慢工厂的东西严重减慢了功能规格,甚至功能规格也是固有的慢规格。然后我进行了一些检查,发现大多数慢工厂是由paperclip. 我们在这里有使用回形针的模型:

FactoryGirl.define do
  factory :asset do
    image Rails.root.join('spec/fixtures/sample.jpg').open
  end
end

所以我想知道是否有像测试模式这样的方法paperclip来加速测试。我在这里有一个简单的解决方案:只需复制原始文件而不是实际裁剪它。

4

2 回答 2

8

您可以在工厂中设置回形针图像字段,这将导致回形针甚至不尝试处理图像:

factory :asset do        
  # Set the image fields manually to avoid uploading / processing the image
  image_file_name { 'test.jpg' }
  image_content_type { 'image/jpeg' }
  image_file_size { 256 }
end
于 2013-09-04T04:41:37.567 回答
4

我找到了实现这一目标的方法,请参见以下代码:

FactoryGirl.define do
  factory :asset do
    image_file_name { 'sample.jpg' }
    image_content_type 'image/jpeg'
    image_file_size 256

    after(:create) do |asset|
      image_file = Rails.root.join("spec/fixtures/#{asset.image_file_name}")

      # cp test image to direcotries
      [:original, :medium, :thumb].each do |size|
        dest_path = asset.image.path(size)
        `mkdir -p #{File.dirname(dest_path)}`
        `cp #{image_file} #{dest_path}`
      end
    end
  end
end

创建钩子后,手动cp将测试图像添加到 factory_girl 中的真实资产图像路径。它就像一个魅力。

于 2013-09-05T02:31:52.553 回答