从 RSpec 2 升级
RSpec 3 包含许多重大更改,但我们希望将其打造为迄今为止最顺畅的主要版本 gem 升级体验。为了帮助您完成升级过程,我们与 RSpec 3 并行开发了 RSpec 2.99。3.0 中的每个重大更改都对应着 2.99 中的相应弃用。与其仅仅提供一份描述所有重大更改(其中大多数只影响极少数用户!)的通用升级文档,RSpec 2.99 会为您提供一份针对您的项目量身定制的详细升级清单。
此外,中岛裕二 创建了 Transpec - 一款非常棒的工具,可以自动升级大多数 RSpec 套件。我们在几个项目上尝试过它,对它的效果感到非常惊讶。
如果您使用 rspec-rails
,您可能需要阅读针对该 gem 的 升级说明。
分步说明
- 从 RSpec 2.x 上的绿色测试套件开始。
- 安装 RSpec 2.99。
- 检查您的测试套件,确保它仍然是绿色的。(它应该是绿色的,但我们可能犯了错误 - 如果它破坏了任何东西,请报告错误!)。现在是提交更改的好时机。
- 您会注意到在规格运行结束时打印了一堆弃用警告。这些警告可能会被截断,因为我们不想用相同的弃用警告一遍又一遍地骚扰您。要获取完整的弃用列表,您可以使用
--deprecation-out path/to/file
命令行选项将它们管道到文件。 - 如果您想了解所有被弃用的内容,最好通读弃用消息。在某些情况下,您有选择 - 例如,您可以继续通过提取的 rspec-collection_matchers gem 使用
have
集合基数匹配器,或者将预期表达式重写为类似expect(list.size).to eq(3)
的内容。 - 安装 transpec,因为它可以为您节省大量时间。(请注意,它不需要添加到您的
Gemfile
中:您可以在捆绑包的上下文之外,将transpec
作为独立的可执行文件运行)。 - 在您的项目上运行 transpec。查看
transpec --help
或 自述文件 以获取完整选项列表。 - 运行测试套件(它应该仍然是绿色的,但最好检查一下!),然后提交更改。
- 如果有任何剩余的弃用警告(transpec 无法处理所有您可能遇到的警告),请处理它们。
- 一旦您在 RSpec 2.99 上获得了无弃用警告的测试套件,您就可以升级到 RSpec 3。安装 RSpec 3。
- 运行您的测试套件。它应该仍然是绿色的。如果任何东西失败了,请打开 GitHub 问题 - 我们认为这是一个错误!请注意,您可能仍然会在 RSpec 3 上收到一些 2.99 上没有的额外弃用警告。这是正常的 - 有些东西我们无法在 2.99 中轻松弃用并在 3.0 中删除,因此它们在 3.0 中触发弃用,并计划在 RSpec 4 中删除它们。
- 我们建议再次运行
transpec
。有些更改只有在您的项目使用 RSpec 3 时,transpec 才能完成。 - 提交更改并享受使用最新 RSpec 版本的乐趣!