2014-05-19 60 views
4

如何生成一個文件用於在rspec中以給定大小和測試文件上傳進行測試?我想要生成該文件。使用rspec進行文件上傳測試

我目前擁有fixtures/files中的文件,並使用fixture_file_upload作爲測試文件。我想消除對該示例文件的需求。

回答

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

+0

所以我們不需要任何實際的文件? – PiKaY

+0

@PiKaY fixture_file_upload確實需要實際的文件,所提供的文章建議的替代方法不需要。查看我最新的答案,瞭解您實際測試的內容 –

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