Я новичок в Rspec.Я хотел бы проверить размер файла по изображению, которое превышает 10 МБ в каталоге fixtures.
user_spec.rb
require 'carrierwave/test/matchers'
...
it "is invalid avatar size" do
image_path = File.join(Rails.root, "spec/fixtures/sample.jpg")
user = FactoryBot.build(:user, avatar: File.open(image_path))
user.valid?
expect(user.errors[:avatar]).to include("should be less than 5MB")
end
фабрики / users.rb
FactoryBot.define do
factory :user do
name "Donald Fagen"
username "donald"
email "donald-fagen@gmail.com"
password "Thenightfly"
avatar { Rack::Test::UploadedFile.new(Rails.root.join('spec/fixtures/sample.jpg'), 'image/jpg') }
end
end
user.rb
validate :avatar_size
...
private
def avatar_size
if avatar.size > 5.megabytes
errors.add(:avatar, "should be less than 5MB")
end
end
Но возвращается
1) User validations test invalid information is invalid avatar size
Failure/Error: expect(user.errors[:avatar]).to include("should be less than 5MB")
expected [] to include "should be less than 5MB"
Похоже, что метод avatar_size не работает.Должен ли я сохранить после создания пользовательского объекта, чтобы перейти к avatar_size?Подскажите пожалуйста как проверить размер файла.
- рельсы: 5.1.6
- rspec-rails: 3.8.1
- factory_bot_rails: 4.11.1