当你可以在测试中使用ActiveRecord来创建数据库条目时,工厂/固定装置的目的是什么(我知道工厂就像固定装置一样,但更清晰一点)?即News.create(…)
我只是没有看到使用Factory Girl的任何优势,而不是简单地使用ActiveRecord方法创建一个新用户说新用户..
谢谢
解决方法
拥有工厂并遵循测试数据构建模式将使您在前面做一些工作,但真的会节省您的时间和未来的工作.
假设您有一个汽车模型,并且该汽车拥有一个所有者,并且该所有者需要一个地址.此外,每个人都有其他领域.如果要遵循直接使用模型的方法,则必须在需要它们的每个步骤定义中创建这些对象(以及对应关系).有工厂?您只需定义一次.
一旦您将工厂定义在一个具有相应结构的地方,您所要做的就是要求汽车和工厂将采用其他型号的所有依赖项.那不是很酷吗?最后,您希望专注于测试.
它真的很酷的是你可以覆盖特定的属性,所以你可能有这样的例子,如果你想覆盖属性速度:
Given /^I have a car running^/ Factory :car,speed => 100 end
从我的谦逊的角度来看,我喜欢Factory Girl,因为它使我的测试代码易于保持并且非常容易阅读.