【问题标题】:When to write a mock object vs a Factory (FactoryGirl)何时编写模拟对象与工厂(FactoryGirl)
【发布时间】:2015-04-05 20:44:11
【问题描述】:

我有一个非常大的 Rails 代码库,我们使用了很多工厂 (FactoryGirl)。问题是,工厂女孩的一个实例创建了一个数据库事务,所以当我们运行整个测试套件时,它需要很长时间。然而,如果我们正确地使用了 Rspec 模拟,那么测试会以闪电般的速度运行,因为模拟是轻量级的——不需要数据库事务。

我的问题:您何时模拟角色、实体或对象,何时使用对象的有效实例?如果有人可以提供一个例子,那就太好了。

【问题讨论】:

    标签: ruby-on-rails-4 mocking factory-bot rspec-rails factories


    【解决方案1】:

    我已经学会在您的测试中分解何时使用 FactoryGirl 或活动记录实例。它们应该在您的模型测试和控制器测试中使用。

    模型测试——必须与数据库集成。如果您正在创建与用户实例交互的用户测试,那么您将需要用户工厂。但是,如果您正在与其他模型(不是用户模型)协作,那么我将为这些协作者创建双精度和存根方法。

    也可以慷慨地使用带有控制器测试的工厂。主要是因为控制器是后端生态系统的外层。要对其进行测试,您需要与许多 Rails 和模型的一部分进行集成。我发现这里可以使用工厂。

    对于应用程序逻辑——服务、域、策略、普通的旧 ruby​​ 对象——您应该单独测试每个域。对于正在测试的单元或对象,请随意初始化它,但为其合作者创建双精度、模拟和存根。

    【讨论】:

      猜你喜欢
      • 2011-10-07
      • 1970-01-01
      • 2010-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多