validate :cannot_modify_if_locked, on: :update
def cannot_modify_if_locked
if self.locked
errors.add(:locked_at, "#{self.locked_at} and cannot be modified")
SAI
end
end
RSPEC
consent_form = build(:consent_form, { locked_at: Date.today })
expect(consent_form.).to eq true
这个测试不好。这个测试怎么写?我需要检查 rspec 这个更新验证
在您的规范中,您可以使用 let
助手来内存一个对象,您可以使用它来“重新创建”一个不会成功的更新,也就是说,它必须是无效的。
假设您有自己的模型,您可以创建一个记录,该记录将具有它们的属性以及 locked
vì ĐÚNG VẬY
Và locked_at
显示锁定日期的属性:
RSpec.describe SomeModel, type: :model do
let(:some_object) { SomeModel.new(locked: true, locked_at: Time.now) }
然后您可以使用 let
访问“创建”的对象并尝试对其执行更新,然后您可以使用 expect 来验证它是否有效:
it 'invalid if object is locked' do
some_object.update(some_atttribute: 'Some new attribute')
expect(some_object).to_not be_valid
end
您还可以检查验证错误消息:
expect(some_object.errors[:locked_at].first).to eq("#{task.locked_at} and cannot be modified")
Tôi là một lập trình viên xuất sắc, rất giỏi!