2015-01-07 13 views
18

Tôi đang cố gắng kiểm tra xem người dùng của tôi có giá trị ảnh khi tôi tải lên một hình ảnh hay không. Nó hoạt động tốt trong trình duyệt, và chức năng cơ bản của bài kiểm tra đã trôi qua, nhưng nếu tôi cố gắng xác nhận rằng user.photo không phải là không, thì nó không thành công. Đây là thử nghiệmCách kiểm tra xem tệp có được tải lên trong bộ điều khiển không?

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 

được sản xuất:

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

Nếu tôi đặt một trình gỡ lỗi ở phần cuối của bài kiểm tra và làm user.photo, tôi nhận được:

(byebug) user.photo 

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

Có cách để đảm bảo rằng bộ điều khiển thực sự đã lưu giá trị ảnh trong cơ sở dữ liệu? Nó chỉ là một thuộc tính trên mô hình và nó lưu tên tập tin dưới dạng một chuỗi.

Trả lời

Các vấn đề liên quan