gpt4 book ai didi

ruby-on-rails - Rspec rails on rails 验证

转载 作者:行者123 更新时间:2023-11-28 20:51:36 25 4
gpt4 key购买 nike

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")
false
end
end

RSPEC

 consent_form = build(:consent_form, { locked_at: Date.today })
expect(consent_form.).to eq true

这个测试不好。这个测试怎么写?我需要检查 rspec 这个更新验证

最佳答案

在您的规范中,您可以使用 let 助手来内存一个对象,您可以使用它来“重新创建”一个不会成功的更新,也就是说,它必须是无效的。

假设您有自己的模型,您可以创建一个记录,该记录将具有它们的属性以及 lockedtruelocked_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")

关于ruby-on-rails - Rspec rails on rails 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44741337/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com