这里有点困惑,工厂和灯具有什么区别?
所以我正在使用工厂女孩,当我使用工厂创建一个对象时,它是否应该持久保存到db?或者这就是固定装置,数据通过模型等持久存储到数据库中。
或者这些完全不相关:)
答案 0 :(得分:9)
真正简短的回答是,在Rails灯具和Factory Girl工厂之间概念上存在 no 差异。这只是完成同样事情的不同语法。
然而,这令人困惑,因为一般测试/编码概念的术语已被Rails / Ruby世界中的各个项目所采用。一般来说:
基本上在Rails中,Fixtures和Factories(由Factory Girl定义)只是创建对象的方法。您应该使用它们来创建测试夹具或测试的设置状态。令人困惑的部分是您可以使用多个Rails“Fixtures”来创建单个测试的Fixture(基线)。
Factory Girl本身是Object Mother模式的一种实现,描述了一种使用角色创建测试夹具设置的方法。
答案 1 :(得分:1)
他们习惯于实现相同的目标,用数据填充数据库以供测试。
灯具比工厂快,因为它们不使用验证或任何模型的逻辑,但很难维护,缺乏验证可能会破坏您的测试。
对于工厂,您需要以速度为代价在数据库中拥有有意义(且有效)的内容。
还有其他解决方案,比如fixture_builder,可让您使用工厂定义灯具;)工厂只运行一次,然后转换为灯具。 https://github.com/rdy/fixture_builder
答案 2 :(得分:0)
例如,使用factory_girl的工厂只是构建具有预定义值的对象的意思。它不需要您将它们插入任何类型的持久存储中。构建复杂对象非常方便。 factory_girl显然有很多功能,但这是我看到它的主要目标。
注意:我在这里只回答了问题的一半,因为我对夹具不是很熟悉...... 我在这里扔了2美分。希望这会有所帮助。