【发布时间】:2012-03-22 15:32:30
【问题描述】:
我将 FactoryGirl 用于我的固定装置,但我发现它并没有真正产生有用的验证错误。
我总是收到有关 activerecord.errors.models.messages.record_invalid 的消息。
不确定需要哪些进一步的详细信息来帮助诊断。这使得跟踪每个错误的过程非常缓慢。
示例工厂:
Factory.define :partner do |partner|
partner.sequence(:username){ |n| "amcconnon#{n}" }
partner.first_name "Bobby Joe"
partner.last_name "Smiley"
partner.sequence(:email){ |n| "bob{n}@partners.com" }
partner.phone_number "5557 5554"
partner.country_id 75
partner.password "password"
partner.password_confirmation "password"
end
Then Factory(:partner) => "ActiveRecord::RecordInvalid Exception: 看起来这些更改出了点问题"
实际的问题当然是电子邮件序列没有正确使用 n 并且电子邮件有唯一的验证。但这是为了说明目的。
导轨 => 3.2.2 factory_girl 2.6.1
是否需要任何其他的 deets 来帮助诊断?
(注意:编辑这个只是为了添加一个更容易阅读的工厂)
编辑:
根据 bijan 的评论:“我到底想做什么。”
尝试运行“rspec 规范”。我想当我在这种情况下使用像 Factory(:partner) 这样的工厂来获取错误消息时,它不能包含我从 Partner.new({blah...}).valid 得到的相同错误?然后查看验证失败。
【问题讨论】:
-
你到底想做什么?您只需调用 partner.errors 或 .message 就单个错误来找出问题所在。
-
那么您是否尝试通过更改工厂定义来测试验证,故意包含未通过验证的属性?还是我误会了?
-
问题在于,当我们更改或验证时,工厂出现故障,故障发生的位置可能非常模糊。
标签: ruby-on-rails rspec factory-bot