2015-04-05 70 views
1

我有一个非常大的Rails代码库,并且我们使用了很多工厂(FactoryGirl)。问题是,工厂女孩的一个实例创建一个数据库事务,所以当我们运行整个测试套件时,需要很长时间。但是,如果我们正确地使用了Rspec mocks,那么测试将会闪电般快速运行,因为嘲笑是轻微的 - 无需数据库事务处理。什么时候写模拟对象vs工厂(FactoryGirl)

我的问题:你什么时候模拟角色,实体或对象,什么时候使用对象的有效实例?如果有人能提供一个例子,那会很棒。

回答

1

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

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

人们也可以使用控制器测试工厂慷慨。主要是因为控制器是后端生态系统的外部层。为了测试它,你将需要集成很多Rails和你的模型的一部分。我发现可以在这里使用工厂。

对于应用程序逻辑 - 服务,域,策略,普通的旧ruby对象 - 应该单独测试每个域。对于被测试的单元或对象,可以随意初始化它,但为其协作者创建双打,嘲笑和存根。