2015-01-07 21 views
18

Resim yüklediğimde kullanıcının bir fotoğraf değerine sahip olduğunu test etmeye çalışıyorum. Tarayıcıda iyi çalışıyor ve testin temel işlevleri geçiyor, ancak eğer user.photo'nin sıfır olmadığını iddia etmeye çalışırsam başarısız olur. Burada test Bir dosyanın bir denetleyiciye nasıl yüklendiğini sınama?

describe 'POST #update' do 
    context 'when there is an image' do 
    it 'renders the crop template' do 
     login(user) 
     photo = File.open(File.join(Rails.root, '/spec/fixtures/images/bob-weir.jpg')) 
     post :update, user: { photo: photo } 

     expect(response).to render_template('crop') 
     user.reload 
     expect(user.photo.file).to_not be_nil 
    end 
    end 
end 
üretiyor var:

Failure/Error: expect(user.photo.file).to_not be_nil 
     expected: not nil 
      got: nil 

ben user.photo yapmak testin sonunda bir hata ayıklayıcı koymak ve, ben alıyorum:

(byebug) user.photo 

#<PhotoUploader:0x007fa447029480 @model=#<User id: 226, ..... photo: nil>, 
@mounted_as=:photo, @storage=#<CarrierWave::Storage::File:0x007fa4468ddbb8 
@uploader=#<PhotoUploader:0x007fa447029480 ...>>> 

var mı uygulanıyor denetleyicinin veritabanında bir fotoğraf değerini gerçekten kaydettiğinden emin olmanın yolu nedir? Sadece modeldeki bir özniteliktir ve dosya adını bir dize olarak kaydeder. Bir fabrikada bu kullanmak istiyorsa http://api.rubyonrails.org/classes/ActionDispatch/TestProcess.html#method-i-fixture_file_upload

post :update, user: { photo: fixture_file_upload('images/bob-weir.jpg', 'image/jpg') } 
Ayrıca

, olurdu:

cevap

29

Cevap fixture_file_upload kullanmaktı

Rack::Test::UploadedFile.new(File.open(File.join(Rails.root, '/spec/fixtures/images/bob-weir.jpg'))) 
İlgili konular