Я пытаюсь проверить, что мой пользователь имеет значение фото при загрузке изображения. Он отлично работает в браузере, и основная функциональность теста проходит, но если я попытаюсь утверждать, что user.photo не равен нулю, он терпит неудачу. Вот тестКак проверить, что файл загружен в контроллер?
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
производит:
Failure/Error: expect(user.photo.file).to_not be_nil
expected: not nil
got: nil
Если я ставлю отладчик в конце теста и сделать user.photo, я получаю:
(byebug) user.photo
#<PhotoUploader:0x007fa447029480 @model=#<User id: 226, ..... photo: nil>,
@mounted_as=:photo, @storage=#<CarrierWave::Storage::File:0x007fa4468ddbb8
@uploader=#<PhotoUploader:0x007fa447029480 ...>>>
Есть ли чтобы просто убедиться, что контроллер фактически сохранил значение фото в базе данных? Его просто атрибут модели и сохраняет имя файла как строку.