当我可以使用before(:each)个区块时,工厂女孩在rspec测试中的目的是什么?感觉Factory Girl和before(:each)的唯一区别在于,工厂在测试之外准备对象创建.是这样吗?

推荐答案

Factory GirlSham这样的Gems允许你为有效和可重复使用的对象创建模板.它们是根据固定装置创建的,固定装置中的记录必须加载到数据库中.它们允许在实例化对象时进行更多自定义,目的是确保您有一个有效的对象来处理.它们可以在测试中的任何地方使用,也可以在测试前后使用.

before(:each)、before(:all)、after(:each)和after(:all)都旨在为您提供一个可以在测试组中共享的安装和拆卸位置.例如,如果您要 for each 测试创建一个新的有效用户,那么您将希望在before(:each)钩子中这样做.如果要从文件系统中清除一些文件,则需要使用before钩子.如果您的所有测试都创建了一个tmp文件,并且您希望在测试之后删除它,那么您将在after(:each)或after(:all)钩子中执行该操作.

这两个概念的不同之处在于,工厂的目标不是围绕测试创建钩子,而是创建有效的Ruby对象和记录,这样您就可以保持对象创建的灵活性和干爽性.Before和after钩子针对的是示例组中共享的安装和拆卸任务,这样您就可以保持安装和拆卸代码的干燥.

Ruby相关问答推荐

如何根据数组键对散列键进行排序?

如何在 Ruby 中验证来自多项 Select 提示的命令行输入?

Faraday中的timeout和open timeout是什么?

将块传递给方法传递给Ruby中的另一个方法

Ruby:拆分,然后删除前导/尾随空格?

Sublime Text 2 中的 RubyTest

在 ruby​​ 中调试第三方 gem 的最佳方法

如何判断我是从 JRuby 还是 Ruby 运行?

Ruby 中的抽象方法

在 jekyll 博客中支持标签的简单方法

从字符串中删除所有特殊字符 - ruby

在 Ruby 中将散列扁平化为字符串

如何让 Ruby 1.9 成为 Ubuntu 上的默认 Ruby?

跳过 Enumerable#collect 中的迭代

判断字符串是否为空的Ruby方法?

如何在 Ruby 中向异常消息中添加信息?

在 Jekyll 中使用 Live Reload

将 Nokogiri 文档转换为 Ruby 哈希

Eclipse 的首选 Ruby 插件?

查找模块中可用的类