ruby - Rspec 验证失败:照片不能为空白
问题描述
我正在尝试为具有照片作为强制性关联的模型创建测试。这是我的模型:
class Car < ApplicationRecord
has_one_attached :photo
validates :name, uniqueness: true
validates :name, presence: true
validates :photo, presence: true
end
这是我的测试:
require 'rails_helper'
RSpec.describe 'Car', type: :model do
let(:valid_attributes) do
{
name: 'Audi'
}
end
it 'name is unique' do
Car.create!(name: 'Audi')
car = Car.new(name: 'Audi')
expect(car).not_to be_valid
end
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>'
我不能做的是附上一张照片进行测试。你有什么建议吗?
解决方案
如您所料,要通过验证,您必须在测试中添加图片:)
require 'rails_helper'
RSpec.describe 'Car', type: :model do
let(:valid_attributes) do
{
name: 'Audi'
}
end
let(:photo) do
Rack::Test::UploadedFile.new(
Rails.root.join('path/to/image.png'), 'image/png'
)
end
it 'name is unique' do
Car.create!(name: 'Audi', photo: photo)
car = Car.new(name: 'Audi', photo: photo)
expect(car).not_to be_valid
end
end
推荐阅读
- javascript - 使用 .css("background-color") 的 jQuery 突出显示文本不起作用
- python - Python - 将 title() 函数应用于列中的值
- python - iwconfig 对使用 crontab @reboot 启动的进程不可用?
- c# - 从包括空格在内的单行中读取字符,而不是从新行中读取字符
- anaconda - 安装包后,Conda 需要 20 多分钟才能解决环境问题
- spring - 验证 Webflux ReactiveMongo
- c# - CSV文件的强类型解析
- react-native - 未定义不是对象(评估'_this2.props.navigation.navigate') - React Native
- udp - 对于小于默认值 1472 的有效负载大小,gnuradio UDP 源块的正确 MTU 设置是什么?
- git - 如何将作者姓名添加到自定义 git 别名?