【发布时间】:2009-12-12 03:57:09
【问题描述】:
在 Rails 中,对于给定模型,固定装置记录似乎是孤立地插入和删除的。我想测试一个事务中有许多对象/行,例如。检查唯一性。怎么做?
【问题讨论】:
标签: ruby-on-rails ruby unit-testing testing
在 Rails 中,对于给定模型,固定装置记录似乎是孤立地插入和删除的。我想测试一个事务中有许多对象/行,例如。检查唯一性。怎么做?
【问题讨论】:
标签: ruby-on-rails ruby unit-testing testing
夹具未经过验证。当你设置它们时,它们可能是完全错误的,Rails 不会抱怨,直到出现问题。在运行测试之前确保您的初始测试数据库(使用您的固定装置播种)处于有效状态是一个好主意。
为了检查诸如唯一性之类的事情,我会即时创建记录,而不是依赖于固定装置。要么在你的测试用例中直接创建它们,要么使用 FactoryGirl 之类的东西(顺便说一句,这是清理测试并完全停止使用固定装置的好方法)。
【讨论】:
您是说要构建一个测试来检查 rails “validates_uniqueness_of” 运算符,还是要测试您自己的唯一记录的逻辑?在第一种情况下,我不会打扰,Rails 测试涵盖了这一点。在第二种情况下,我将创建一个测试,该测试创建一个与夹具中的记录相同的记录。
从广义上讲,将多个保存放入单个事务中,您可以创建对象,然后:
MyModel.transaction do
model1.save
model2.save
end
但我认为这不是完成您似乎想做的任何事情的方法。
【讨论】: