Ruby Rspec验证失败:照片罐';不要空白
我正在尝试为一个模型创建一个测试,该模型将照片作为强制关联。 这是我的模型:Ruby Rspec验证失败:照片罐';不要空白,ruby,rspec,rspec-rails,ruby-on-rails-6,Ruby,Rspec,Rspec Rails,Ruby On Rails 6,我正在尝试为一个模型创建一个测试,该模型将照片作为强制关联。 这是我的模型: class Car < ApplicationRecord has_one_attached :photo validates :name, uniqueness: true validates :name, presence: true validates :photo, presence: true end 试验结果如下: Failures: 1) Car name is uniq
class Car < ApplicationRecord
has_one_attached :photo
validates :name, uniqueness: true
validates :name, presence: true
validates :photo, presence: true
end
试验结果如下:
Failures:
1) Car name is unique
Failure/Error: Car.create!(name: 'Audi')
ActiveRecord::RecordInvalid:
Validation failed: Photo can't be blank
# ./spec/models/car_model_spec.rb:23:in `block (2 levels) in <main>'
故障:
1) 汽车名称是唯一的
失败/错误:Car.create!(名称:“奥迪”)
ActiveRecord::RecordInvalid:
验证失败:照片不能为空
#./spec/models/car\u model\u spec.rb:23:in‘block(2层)in’
我不能做的是附上一张照片进行测试。您有什么建议吗?在您的
车型中,您有以下建议:
validates :photo, presence: true
这意味着每辆汽车
必须有一张照片
。当您在规格中写入此项时:
Car.create!(name: 'Audi')
您正在尝试创建一辆没有照片的汽车。因此,错误提示验证失败,因为照片不能为空。
您可以删除validates:photo,presence:true
,或者将photo:some\u photo\u url
传递到Car.create!()
:
其中some\u photo\u url
是汽车照片的url。
要将图像保存到ActiveRecord中的记录,您应该查看Active::Storage
在您的车型中,您有以下功能:
validates :photo, presence: true
这意味着每辆汽车
必须有一张照片
。当您在规格中写入此项时:
Car.create!(name: 'Audi')
您正在尝试创建一辆没有照片的汽车。因此,错误提示验证失败,因为照片不能为空。
您可以删除validates:photo,presence:true
,或者将photo:some\u photo\u url
传递到Car.create!()
:
其中some\u photo\u url
是汽车照片的url。
要将图像保存到ActiveRecord中的记录,您应该查看Active::Storage
,正如您所猜测的,要通过验证,您必须向测试中添加一张图片:)
require'rails\u helper'
RSpec.description'Car',type::model do
让(:有效的_属性)执行
{
名称:“奥迪”
}
结束
让(:照片)做吧
Rack::Test::UploadedFile.new(
join('path/to/image.png'),'image/png'
)
结束
它的“名称是唯一的”吗
汽车,创造!(姓名:“奥迪”,照片:照片)
车=车。新(名称:“奥迪”,照片:照片)
期望(汽车)。无效
结束
结束
正如您所猜测的,要通过验证,您必须在测试中添加一张图片:)
require'rails\u helper'
RSpec.description'Car',type::model do
让(:有效的_属性)执行
{
名称:“奥迪”
}
结束
让(:照片)做吧
Rack::Test::UploadedFile.new(
join('path/to/image.png'),'image/png'
)
结束
它的“名称是唯一的”吗
汽车,创造!(姓名:“奥迪”,照片:照片)
车=车。新(名称:“奥迪”,照片:照片)
期望(汽车)。无效
结束
结束
Typo:ActiveStorage*我在创建实例时尝试添加照片的url,但无效。我还尝试了first\u car=car.new(name:'Audi')first\u car.photo.attach(io:File.open('/app/assets/images/')、filename:'Audi.jpeg',content\u type:'image/jpg')
,但我没有得到这样的文件或目录@rb\u sysopenTypo:ActiveStorage*我在创建实例时尝试添加照片的url,但不起作用。我还尝试了first\u car=car.new(名称:'Audi')first\u car.photo.attach(io:File.open('/app/assets/images/')、文件名:'Audi.jpeg',内容类型:'image/jpg')
,但我没有得到这样的文件或目录@rb\u sysopen