使用rspec进行文件上传测试

时间:2014-05-19 07:44:14

标签: ruby-on-rails rspec rspec-rails specifications

如何在rspec中生成用于测试的文件以及给定大小和测试文件上载?我想生成文件。

我目前在fixtures / files中有文件,并使用fixture_file_upload作为测试文件。我想消除对该样本文件的需求。

2 个答案:

答案 0 :(得分:3)

您可以使用factory_girlfabrication来模拟上传的文件。

factory_girl的示例配置如下:

factory :attachment do
  supporting_documentation_file_name { 'test.pdf' }
  supporting_documentation_content_type { 'application/pdf' }
  supporting_documentation_file_size { 1024 }
end

看看这篇关于为什么以及如何do that using factory girl

的好文章

正如文章所述,这需要改变您的测试理念。您只需关注必要的模型,而不是测试文件上传本身(您正在使用的宝石已经在测试)。

可以在此处Mocking file uploads in Rails 3.1 controller tests

找到练习实际上传的替代方法

答案 1 :(得分:0)

如果有人想将上传的文件存根到测试模型逻辑,那么这就是解决方案:

    file = Rack::Test::UploadedFile.new(File.join(Rails.root, 'app', 'assets', 'images', 'test-file.jpg'), 'image/jpg')

    allow_any_instance_of(Model).to receive(:photo_obj).and_return file