Ruby on rails Rspec rails on rails验证

Ruby 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帮助程序来记忆对象

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
帮助程序来记忆对象,您可以使用该对象“重新创建”更新,但该更新不会成功,也就是说,必须无效

假设您有自己的模型,您可以创建一个记录,该记录将具有其属性,并且
锁定
,以及
锁定
属性以显示其锁定的日期:

 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