ruby-on-rails-4 rspec carrierwave factory-bot uploader

ruby on rails 4 - ¿Cómo probar que un archivo se carga en un controlador?



ruby-on-rails-4 rspec (1)

Estoy intentando probar que mi usuario tiene un valor de foto cuando subo una imagen. Funciona bien en el navegador, y la funcionalidad básica de la prueba pasa, pero si intento afirmar que user.photo no es nulo, falla. Aqui esta la prueba

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

está produciendo

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

Si pongo un depurador al final de la prueba y hago user.photo, obtengo:

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

¿Hay alguna forma de asegurarse de que el controlador haya guardado un valor de foto en la base de datos? Es solo un atributo en el modelo y guarda el nombre del archivo como una cadena.