Factory Girl和User.create有什么区别?

7

这是对问题"Factory Girl - what's the purpose?"的补充说明。

我不确定我的问题是否算是重复的,但我在阅读了那篇文章后仍然不太清楚,因为我认为我的疑惑还是有所不同。

好的,既然我们可以在 Rspec 测试的 before(:each) 块中始终使用 User.create(),那么为什么我们还要费心使用 Factory Girl 呢?

当我阅读 Michael Hartl 的 "Rails 3 教程" 时,他突然跳到 Factory Girl,但在此之前一直使用 User.create() 来构建 User 实例,这让我感到困惑。

我希望有人能为我澄清这个问题,非常感谢!

1个回答

4

您说得没错,但是像Factory Girl和Fabrication这样的宝石可以在测试大量数据时减少类之间以及不同测试方法内部的代码重复,因为这些数据需要不同的属性值以满足其唯一性要求。它会混合一些方法,方便地“制造”许多不同类型的对象用于这些测试。


2
那么,工厂模式的优势只有在我们需要构建大量实例和/或实例将用于不同的测试示例时才会发挥作用?那么只要我们只需要构建1或2个实例,使用工厂就没有太大的区别了,对吧? - adam_0628
@adam_0628,我同意你的结论。也许可以查看链接的问题以获得更多解释?https://dev59.com/D2435IYBdhLWcg3w1j2V - sivabudh
@ShaChris23,感谢您的评论。记录上来说,您的链接正是我在文章中提到的“Factory Girl - 是什么目的”的那个链接。哈哈,还是谢谢!:) - adam_0628

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接