Ruby on rails 什么';在我的单元测试中,夹具和工厂有什么区别?

Ruby on rails 什么';在我的单元测试中,夹具和工厂有什么区别?,ruby-on-rails,rspec,factory-bot,Ruby On Rails,Rspec,Factory Bot,这里有点困惑,工厂和固定装置的区别是什么 所以我使用的是factory_girl,当我使用factory创建一个对象时,它应该被持久化到db吗?或者这就是fixture,数据通过模型等持久化到数据库中 或者这些是完全不相关的:)它们用于实现相同的目标,用测试数据填充数据库 夹具比工厂快得多,因为它们不使用验证或任何模型逻辑,但很难维护,缺乏验证可能会破坏测试 有了工厂,数据库中就有了有意义(且有效)的内容,但这是以速度为代价的 还有其他解决方案,比如fixture_builder,它允许您使用工

这里有点困惑,工厂和固定装置的区别是什么

所以我使用的是factory_girl,当我使用factory创建一个对象时,它应该被持久化到db吗?或者这就是fixture,数据通过模型等持久化到数据库中


或者这些是完全不相关的:)

它们用于实现相同的目标,用测试数据填充数据库

夹具比工厂快得多,因为它们不使用验证或任何模型逻辑,但很难维护,缺乏验证可能会破坏测试

有了工厂,数据库中就有了有意义(且有效)的内容,但这是以速度为代价的


还有其他解决方案,比如fixture_builder,它允许您使用工厂定义fixture;)工厂只运行一次,然后转换成固定装置

工厂(例如使用Factory_girl)只是构建具有预定义值的对象的一种手段。它不需要将它们插入任何类型的持久化存储中。构建复杂对象非常方便。factory_girl显然有更多的功能,但我认为这是它的主要目标

注意:我只回答了一半的问题,因为我不太熟悉这个装置。。。
把我的2美分扔到这里。希望这能有所帮助。

真正简短的答案是,Rails夹具和工厂女孩工厂在概念上没有区别。这只是完成同一件事的不同语法

然而,这会让人感到困惑,因为Rails/Ruby世界中的各个项目都使用了通用测试/编码概念的术语。一般而言:

  • 固定装置为“”
  • 工厂是“
基本上,在Rails中,装置和工厂(由Factory Girl定义)都只是创建对象的方法。您应该使用它们来创建测试夹具或测试的设置状态。令人困惑的是,您可以使用多个Rails“Fixture”来创建单个测试的Fixture(基线)


Factory Girl本身就是该模式的一个实现,它描述了一种使用角色创建测试夹具设置的方法。

不幸的是,在Fowler的页面上,他链接了一篇来自xpuniverse.com的文章,该文章现在已经不存在了。该文章可以在这里找到:@thst