当我可以使用before(:each)
块时,工厂女孩在rspec测试中的目的是什么?感觉就像Factory Girl和a之间的唯一区别before(:each)
是工厂在测试之外准备对象创建.这是正确的吗?
Pan*_*kos 63
像Factory Girl和Sham这样的宝石允许您为有效和可重复使用的对象创建模板.它们是为了响应必须加载到数据库中的固定记录的灯具而创建的.它们允许在实例化对象时进行更多自定义,并且它们旨在确保您具有可以使用的有效对象.它们可以在测试的任何地方以及之前和之后的测试钩子中使用.
之前(:每个),之前(:all),之后(:每个)和之后(:all)都旨在为您提供一个可以在测试组之间共享的设置和拆卸的位置.例如,如果您要为每个单独的测试创建一个新的有效用户,那么您将希望在之前的(:each)挂钩中执行此操作.如果要从文件系统中清除某些文件,则需要在之前的挂钩中执行此操作.如果您的测试都创建了一个tmp文件,并且您想在测试后删除它,那么您将在after(:each)或after(:all)钩子中执行此操作.
这两个概念的不同之处在于,Factories并非旨在围绕您的测试创建钩子,它们旨在创建有效的Ruby对象和记录,以便您可以保持对象创建的灵活性和干燥性.挂钩之前和之后的目标是在示例组中共享的设置和拆卸任务,以便您可以保持设置和拆卸代码干燥.
Srd*_*jic 16
FactoryGirl在测试中替换了灯具.这样,您就不必在更改数据模型时使夹具保持最新状态.当你添加更多边缘情况时,固定装置也会变得笨重.
FactoryGirl动态生成数据,添加和删除字段更加容易.此外,您可以在设置中使用它如何使用灯具.
这会让它更清楚吗?