RSpec 2.99 和 3.0 beta 版已经发布!

Myron Marston

2013 年 11 月 8 日

RSpec 团队刚刚发布了 RSpec 3.0.0.beta1 - 第一个 RSpec 3 预发布版本!与此同时,我们还发布了 2.99.0.beta1,旨在帮助升级过程。

我要感谢所有贡献者,尤其是核心团队(AndyBradleyJonSamXavier)使这个版本得以实现。

我现在没有精力写一篇完整的“RSpec 3 中的新增内容”博客文章,但我们主要根据 之前宣布的 RSpec 3 计划 进行更改。详细的发布说明在下面,以帮助您了解这些版本的详细信息。我们将继续发布其他博客文章,深入讨论新功能。

升级过程

RSpec 3 包含许多重大更改,但我们希望这将是您有史以来最平滑的主要版本 gem 升级。为了协助该过程,我们一直在与 RSpec 3 同时开发 RSpec 2.99。每当我们在 3.0 的主分支中进行重大更改时,我们一直在为 2.99 添加相应的弃用。这不仅仅针对已删除的 API;它也针对边缘情况语义的细微变化(为了使 RSpec 更一致),某些项目可能依赖这些变化。RSpec 2.99 不仅仅提供一个通用的升级文档来描述所有重大更改(包括影响很少用户的许多更改!),它还为您提供详细的升级清单。

此外,Yuji Nakayama 一直在开发 transpec - 一个非常棒的工具,可以自动升级大多数 RSpec 套件。我在几个项目中尝试过它,我对它的效果感到惊叹

以下是我推荐的升级项目到 RSpec 3 的一般方法

  1. 确保您的测试套件已经在您使用的任何 RSpec 2.x 版本上正常运行。
  2. 安装 RSpec 2.99.0.beta1(或在您执行此过程时发布的最新 2.99 版本)。
  3. 运行您的测试套件并确保它仍然正常运行。(它应该正常运行,但我们可能犯了错误 - 如果它破坏了任何东西,请报告错误!)。现在是提交代码的好时机。
  4. 您会注意到,在规范运行结束时会打印出一堆弃用警告。这些警告可能被截断,因为我们不想用相同的弃用警告一再地轰炸您。要获取完整的弃用列表,您可以通过设置 config.deprecation_stream = 'rspec.log' 选项将它们管道到文件中。
  5. 如果您想了解所有被弃用内容,建议您阅读弃用消息。在某些情况下,您有选择 - 例如,继续通过提取的 rspec-collection_matchers gem 使用 have 集合基数匹配器,或者将期望表达式改写为类似 expect(list.size).to eq(3) 的内容。
  6. gem install transpec(请注意,这不需要进入您的 Gemfile:您在捆绑包的上下文之外作为独立可执行文件运行 transpec)。
  7. 在您的项目上运行 transpec。检查 transpec --help自述文件 以获取完整的选项列表。
  8. 运行测试套件(它应该仍然正常运行,但始终检查一下!)并提交代码。
  9. 如果有任何剩余的弃用警告(transpec 无法处理您可能获得的所有警告),请处理它们。
  10. 一旦您拥有针对 RSpec 2.99 运行的无弃用测试套件,您就可以升级到 RSpec 3。安装 RSpec 3.0.0.beta1(或在您执行此过程时发布的最新 3.x 版本)。
  11. 运行您的测试套件。它应该仍然正常运行。如果出现任何故障,请打开一个 GitHub 问题 - 我们认为这是一个 bug[^foot_1]!
  12. 提交代码并享受使用最新 RSpec 版本的乐趣!

下一步

虽然我们在 RSpec 3 上取得了重大进展,但我们还没有完成。我们还有很多工作要做。(我们还没有完成所有计划的内容。)我们认真对待 SemVer,这是我们多年来首次有机会清理旧的垃圾,所以我们想充分利用它:)。我们希望在未来几个月发布一个 RC 版本,并在之后不久发布最终版本。

发布说明

rspec-core 2.99.0.beta1

完整变更日志

增强功能

弃用

rspec-core 3.0.0.beta1

完整变更日志

重大变更

增强功能

弃用

rspec-mocks 2.99.0.beta1

完整变更日志

弃用

增强功能

rspec-mocks 3.0.0.beta1

完整变更日志

重大变更

增强功能

弃用

错误修复

rspec-expectations 2.99.0.beta1

完整变更日志

弃用

rspec-expectations 3.0.0.beta1

完整变更日志

重大变更

增强功能

错误修复

弃用

rspec-rails 2.99.0.beta1

完整变更日志

弃用

增强功能

错误修复

rspec-rails 3.0.0.beta1

完整变更日志

重大变更

[^foot_1]: 但是,有一个注意事项:我们只将它视为一个错误,因为您的测试套件使用了 RSpec API 的文档。Ruby 的动态特性使得 RSpec 可以以我们无法支持的方式使用。