2012-08-25 14 views
4

我有一個模型,其中我使用方法上載圖像如何測試文件上傳的模型?

在圖片控制器I調用 DataFile.save_image_file(PARAMS [:上傳])

我的代碼data_file.rb

 def self.save_image_file(upload) 
     file_name = upload['datafile'].original_filename if (upload['datafile'] !='')  
     file = upload['datafile'].read  

     file_type = file_name.split('.').last 
     new_name_file = Time.now.to_i 
     name_folder = new_name_file 
     new_file_name_with_type = "#{new_name_file}." + file_type 
     new_file_name_thumb_with_type = "#{new_name_file}-thumb." + file_type 

     image_root = "#{RAILS_CAR_IMAGES}" 


      Dir.mkdir(image_root + "#{name_folder}"); 
      File.open(image_root + "#{name_folder}/" + new_file_name_with_type, "wb") do |f| 
      f.write(file) 
      end 

[new_name_file, new_file_name_with_type, new_file_name_thumb_with_type] 

     end 

我想測試它的RSpec

data_file_spec.rb

require 'spec_helper' 

describe DataFile do 
    describe "Should save image file" do 


    before(:each) do 
     @file = fixture_file_upload('/files/test-bus-1.jpg', 'image/jpg') 
    end 

    it "Creating new car name and thumb name" do 
     @get_array = save_file(@file) 
     @get_array[:new_name_file].should_not be_nil 
    end 

    end 
end 

但是測試不起作用

故障/錯誤:@file = fixture_file_upload( '/文件/測試總線-1.JPG', '圖像/ JPG') NoMethodError: 未定義的方法`fixture_file_upload」爲#

回答

14

您需要包括ActionDispatch::TestProcess。嘗試類似:

require 'spec_helper' 

describe DataFile do 
    describe "Should save image file" do 
    let(:file) do 
     extend ActionDispatch::TestProcess 
     fixture_file_upload('/files/test-bus-1.jpg', 'image/jpg') 
    end 

    it "Creating new car name and thumb name" do 
     @get_array = save_file(file) 
     @get_array[:new_name_file].should_not be_nil 
    end 
    end 
end 
+0

文件被感知,但是該方法並沒有看到另一個屬性裝載機 - 上傳[「數據文件」] – user1466717

+0

鑑於我使用<%=是,file_field「上傳」,「數據文件」%>   < %= submit_tag t('field.upload_file')%>
user1466717

+0

已處理 - DataFile.save_image_file(params [:upload] [:datafile],params [:car_id]) – user1466717