【问题标题】:Rails test fixtures vs uniquenessRails 测试夹具与唯一性
【发布时间】:2009-12-12 03:57:09
【问题描述】:

在 Rails 中,对于给定模型,固定装置记录似乎是孤立地插入和删除的。我想测试一个事务中有许多对象/行,例如。检查唯一性。怎么做?

【问题讨论】:

    标签: ruby-on-rails ruby unit-testing testing


    【解决方案1】:

    夹具未经过验证。当你设置它们时,它们可能是完全错误的,Rails 不会抱怨,直到出现问题。在运行测试之前确保您的初始测试数据库(使用您的固定装置播种)处于有效状态是一个好主意。

    为了检查诸如唯一性之类的事情,我会即时创建记录,而不是依赖于固定装置。要么在你的测试用例中直接创建它们,要么使用 FactoryGirl 之类的东西(顺便说一句,这是清理测试并完全停止使用固定装置的好方法)。

    【讨论】:

    • 谢谢,FactoryGirl 看起来很有前途。
    • 对于那些将来阅读本文的人:使用 factorybot 与固定装置有利有弊:社区对此意见分歧很大。请在选择其中一个之前了解这些优点和缺点。
    【解决方案2】:

    您是说要构建一个测试来检查 rails “validates_uniqueness_of” 运算符,还是要测试您自己的唯一记录的逻辑?在第一种情况下,我不会打扰,Rails 测试涵盖了这一点。在第二种情况下,我将创建一个测试,该测试创建一个与夹具中的记录相同的记录。

    从广义上讲,将多个保存放入单个事务中,您可以创建对象,然后:

    MyModel.transaction do
      model1.save
      model2.save
    end
    

    但我认为这不是完成您似乎想做的任何事情的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-21
      相关资源
      最近更新 更多