当我可以使用before(:each)
个区块时,工厂女孩在rspec测试中的目的是什么?感觉Factory Girl和before(:each)
的唯一区别在于,工厂在测试之外准备对象创建.是这样吗?
当我可以使用before(:each)
个区块时,工厂女孩在rspec测试中的目的是什么?感觉Factory Girl和before(:each)
的唯一区别在于,工厂在测试之外准备对象创建.是这样吗?
像Factory Girl和Sham这样的Gems允许你为有效和可重复使用的对象创建模板.它们是根据固定装置创建的,固定装置中的记录必须加载到数据库中.它们允许在实例化对象时进行更多自定义,目的是确保您有一个有效的对象来处理.它们可以在测试中的任何地方使用,也可以在测试前后使用.
before(:each)、before(:all)、after(:each)和after(:all)都旨在为您提供一个可以在测试组中共享的安装和拆卸位置.例如,如果您要 for each 测试创建一个新的有效用户,那么您将希望在before(:each)钩子中这样做.如果要从文件系统中清除一些文件,则需要使用before钩子.如果您的所有测试都创建了一个tmp文件,并且您希望在测试之后删除它,那么您将在after(:each)或after(:all)钩子中执行该操作.
这两个概念的不同之处在于,工厂的目标不是围绕测试创建钩子,而是创建有效的Ruby对象和记录,这样您就可以保持对象创建的灵活性和干爽性.Before和after钩子针对的是示例组中共享的安装和拆卸任务,这样您就可以保持安装和拆卸代码的干燥.