Ruby on rails Ruby有效吗?方法
我一直在用RSpec写测试 当我执行Ruby on rails Ruby有效吗?方法,ruby-on-rails,ruby,rspec,Ruby On Rails,Ruby,Rspec,我一直在用RSpec写测试 当我执行valid?方法时,它会删除对象拥有的错误消息。 我不明白为什么会这样。 这是RSpec还是Ruby特有的行为? 如果是这样的话,我该如何回避呢 我经常看到这样的测试用例 it"isinvalidwithoutafirstname"do contact = Contact.new(firstname: nil) contact.valid? expect(contact.errors[:firstname]).not_to include("ca
valid?
方法时,它会删除对象拥有的错误消息。
我不明白为什么会这样。
这是RSpec还是Ruby特有的行为?
如果是这样的话,我该如何回避呢
我经常看到这样的测试用例
it"isinvalidwithoutafirstname"do
contact = Contact.new(firstname: nil)
contact.valid?
expect(contact.errors[:firstname]).not_to include("can't be blank")
end
在本例中,他们为什么在expect
之前使用contact.valid
更新
plan=plan.new(
xxx\u id:xxx\u id,
金额:金额,,
货币:货币,,
间隔:间隔,,
姓名:姓名,,
描述:描述
)
退货计划,除非计划有效?
开始
XXX::Plan.create(
id:xxx\U id,
金额:金额,,
货币:货币,,
间隔:间隔,,
姓名:姓名
)
营救XXX::XXXError=>e
计划错误[:base]联系人
不会有错误,除非您尝试保存它。只是初始化一个实例不会给它一个错误。只有在联系时调用.save
或.create
时,才会填充错误对象
请参见上一个调用计划的示例中的。创建而不将其分配给任何变量。但当异常抛出时,您会将错误添加到包含有效模型对象的变量plan
。调用“valid”后是否设置了间隔值?因为plan.errors告诉您缺少间隔,但在检查之前的plan行时,间隔就存在了
“有效?”清除所有错误,然后运行验证,因此,当运行“有效”时,间隔不是空的,验证通过,这是预期的行为,如果有任何错误,将填充错误属性,但如果没有,则错误将为空
您发布的规范非常好,您有一个处于无效状态的对象(名字是nil)那么有效吗?在该字段上添加一个错误(最好也测试“expect(contact.)\u invalid”)“直到调用.save或.create”-嗯,实际上是验证过程填充了错误。您可以使用.valid?
plan = Plan.new(
xxx_id: xxx_id,
amount: amount,
currency: currency,
interval: interval,
name: name,
description: description
)
return plan unless plan.valid?
begin
XXX::Plan.create(
id: xxx_id,
amount: amount,
currency: currency,
interval: interval,
name: name
)
rescue XXX::XXXError => e
plan.errors[:base] << e.message
return plan
end
plan.save && plan