2

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

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

4

1 回答 1

3

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

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

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

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

于 2015-08-07T14:48:07.860 回答