2015-01-07 7 views
18

Ich versuche zu testen, dass mein Benutzer einen Fotowert hat, wenn ich ein Bild hochlade. Es funktioniert gut im Browser, und die grundlegende Funktionalität des Tests besteht, aber wenn ich versuche, diesen Benutzer zu bestätigen. Foto ist nicht Null, es schlägt fehl. Hier ist der TestWie testen, dass eine Datei in einem Controller hochgeladen wird?

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 

produziert:

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

Wenn ich einen Debugger am Ende des Tests setzen und user.photo tun, erhalte ich:

(byebug) user.photo 

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

Gibt es eine Möglichkeit, nur sicherzustellen, dass der Controller tatsächlich einen Fotowert in der Datenbank gespeichert hat? Es ist nur ein Attribut im Modell und speichert den Dateinamen als String.

Antwort

Verwandte Themen