Ruby on rails Rspec rails on rails验证
RSPECRuby on rails Rspec rails on rails验证,ruby-on-rails,testing,rspec,Ruby On Rails,Testing,Rspec,RSPEC 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一起检查此更新验证在您的规范中,您可以使用let帮助程序来记忆对象
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一起检查此更新验证在您的规范中,您可以使用
let
帮助程序来记忆对象,您可以使用该对象“重新创建”更新,但该更新不会成功,也就是说,必须无效
假设您有自己的模型,您可以创建一个记录,该记录将具有其属性,并且锁定
为真
,以及锁定
属性以显示其锁定的日期:
consent_form = build(:consent_form, { locked_at: Date.today })
expect(consent_form.).to eq true
然后,您可以使用let
访问“创建”的对象,并尝试对其执行更新,然后您可以使用expect验证该对象是否无效:
RSpec.describe SomeModel, type: :model do
let(:some_object) { SomeModel.new(locked: true, locked_at: Time.now) }
您还可以检查验证错误消息:
it 'invalid if object is locked' do
some_object.update(some_atttribute: 'Some new attribute')
expect(some_object).to_not be_valid
end
在您的规范中,您可以使用
let
helper来记忆对象,您可以使用该对象“重新创建”更新,但更新不会成功,也就是说,更新必须无效
假设您有自己的模型,您可以创建一个记录,该记录将具有其属性,并且锁定
为真
,以及锁定
属性以显示其锁定的日期:
consent_form = build(:consent_form, { locked_at: Date.today })
expect(consent_form.).to eq true
然后,您可以使用let
访问“创建”的对象,并尝试对其执行更新,然后您可以使用expect验证该对象是否无效:
RSpec.describe SomeModel, type: :model do
let(:some_object) { SomeModel.new(locked: true, locked_at: Time.now) }
您还可以检查验证错误消息:
it 'invalid if object is locked' do
some_object.update(some_atttribute: 'Some new attribute')
expect(some_object).to_not be_valid
end
重新格式化代码不清楚您要实现什么,代码无效。你能在你的问题中用简单的英语解释一下吗?我想写下这个答案,谢谢你的帮助。问题已解决:)@sebareformated该代码不清楚您试图实现什么,该代码无效。你能在你的问题中用简单的英语解释一下吗?我想写下这个答案,谢谢你的帮助。问题已解决:)@seba