RSpec 3.9 已发布,RSpec 团队也有一些变化。
Jon Rowe
2019 年 10 月 16 日RSpec 3.9 刚刚发布! 由于 RSpec 项目遵循 语义版本控制,任何已经使用 RSpec 3 的用户都应该能够无缝升级到此版本,但是如果我们引入了回归,请告诉我们,我们会尽快发布一个补丁版本来解决它。
我们遗憾地宣布,Penelope Phippen 已从项目中退休,留下我和 Jon Rowe 作为未来唯一的首席维护者,但并非全是坏消息,我们欢迎我们最新的核心团队成员 Phil Pirozhkov。
感谢 Penelope 多年来付出的辛勤努力,并欢迎 Phil!
这是 RSpec gems(rspec
、rspec-core
、rspec-expectations
和 rspec-mocks
)与 rspec-rails
同步的最后一个版本。 我们将很快推出 rspec-rails
4,它将被归类为扩展 gem,并且不会与核心 gem 版本同步,这将使我们能够将 rspec-rails
与 Rails 版本保持同步,更多信息很快公布。
RSpec 继续从世界各地获得贡献,我们有 369 次提交和 98 个合并的拉取请求来自 52 个不同的贡献者,他们帮助实现了此版本的发布。 感谢大家 :)
值得注意的更改
核心:改进的错误处理
如果 RSpec 在加载支持文件时遇到错误,它现在将跳过加载规范文件,从而消除由于早期错误导致的后续混乱错误。 此外,如果可用,将针对遇到的任何 LoadError
显示 did_you_mean
建议。
核心:命令行界面改进,--example-matches
在 3.9 版本发布后,您现在可以使用 --example-matches
通过正则表达式过滤您的示例,如果您只知道示例名称的一部分或在多个不同文件中具有相同主题的规范,这将非常有用。
核心:新格式化程序
在 3.9 中,您会发现一个新的内置格式化程序选项,即故障列表格式化程序,可以通过命令行使用 --format f
或 --format failure_list
,或者通过 RSpec::Configuration#formatter
方法使用。 此新的格式化程序以更简化的“快速修复”样式输出产生输出。
期望:respond_to(:new)
respond_to
匹配器现在专门处理 :new
并在它是标准类方法时检查 :initialize
。
期望:空差异警告
在 3.9 之前,当您的匹配器失败但测试中项目的检查输出相同时,您将得到一个令人困惑的差异,其中两边看起来都一样,我们现在检测到这种情况并发出警告。
模拟:改进的线程安全性
对于运行并行化规范的人来说,这是一个额外的好处,3.9 通过添加互斥锁来避免死锁错误,从而对我们的线程行为进行了一些改进。
Rails:rails_helper.rb
改进
3.9 中的一个小调整,将生成的 rails_helper.rb
与 Ruby 语义保持一致,并在较新的 Ruby 上使用 __dir__
而不是 __FILE__
。
Rails:新的电子邮件匹配器
添加一个新的 have_enqueued_mail
匹配器,以便更容易断言邮件特定的活动作业。
Rails:新的生成器
3.9 版本带来了一些新的生成器脚手架,您现在可以在 Rails 5.1 及更高版本上生成系统规范,为生成器生成规范,以及在生成控制器规范时添加路由。
统计
合并
- 总提交次数: 322
- 合并的拉取请求: 59
- 54 位贡献者:Aaron Kromer, Alex Haynes, Alireza Bashiri, Andy Waite, Benoit Tigeot, Bobby McDonald, Chris, Christophe Bliard, ConSou, David Rodríguez, Douglas Lovell, Eito Katagiri, Emric, Fred Snyder, Giovanni Kock Bonetti, Grey Baker, Jack Wink, Jamie English, Joel Lubrano, Jon Rowe, Juanito Fatas, Keiji, Kevin, Kevin Kuchta, Kieran O'Grady, Kohei Sugi, Laura Paakkinen, Manuel Schnitzer, Matijs van Zuijlen, Michel Ocon, Myron Marston, Nazar Matus, Nick LaMuro, OKURA Masafumi, Olle Jonsson, Orien Madgwick, Patrick Boatner, Penelope Phippen, Pete Johns, Phil Pirozhkov, Philippe Hardardt, Rafe Rosen, Romain Tartière, Ryan Lue, Sam Joseph, Samuel Williams, Taichi Ishitani, Takumi Kaji, Thomas Walpole, Tom Grimley, Viktor Fonic, Yoshimi, aymeric-ledorze, 三上大河
rspec-core
- 总提交次数: 92
- 合并的拉取请求: 13
- 22 位贡献者:Alex Haynes, Andy Waite, Benoit Tigeot, Chris, Christophe Bliard, David Rodríguez, Jon Rowe, Juanito Fatas, Keiji, Matijs van Zuijlen, Myron Marston, Nick LaMuro, Olle Jonsson, Orien Madgwick, Pete Johns, Phil Pirozhkov, Philippe Hardardt, Romain Tartière, Sam Joseph, Samuel Williams, Viktor Fonic, Yoshimi
rspec-expectations
- 总提交次数: 60
- 合并的拉取请求: 7
- 15 位贡献者:Benoit Tigeot, Eito Katagiri, Fred Snyder, Jack Wink, Jamie English, Jon Rowe, Juanito Fatas, Matijs van Zuijlen, Myron Marston, Nazar Matus, Olle Jonsson, Orien Madgwick, Pete Johns, Phil Pirozhkov, Taichi Ishitani
rspec-mocks
- 总提交次数: 38
- 合并的拉取请求: 2
- 10 位贡献者:Alireza Bashiri, Benoit Tigeot, Jon Rowe, Juanito Fatas, Kevin, Matijs van Zuijlen, Myron Marston, Olle Jonsson, Orien Madgwick, Patrick Boatner
rspec-rails
- 总提交次数: 103
- 合并的拉取请求: 17
- 27 位贡献者:Aaron Kromer, Benoit Tigeot, Bobby McDonald, ConSou, Douglas Lovell, Emric, Giovanni Kock Bonetti, Grey Baker, Joel Lubrano, Jon Rowe, Kevin Kuchta, Kieran O'Grady, Kohei Sugi, Laura Paakkinen, Manuel Schnitzer, Michel Ocon, Myron Marston, OKURA Masafumi, Olle Jonsson, Orien Madgwick, Penelope Phippen, Rafe Rosen, Ryan Lue, Takumi Kaji, Thomas Walpole, Tom Grimley, aymeric-ledorze
rspec-support
- 总提交次数: 29
- 合并的拉取请求: 20
- 4 位贡献者:Benoit Tigeot, Jon Rowe, Myron Marston, 三上大河
文档
API 文档
Cucumber 特性
发行说明
rspec-core-3.9.0
增强功能:* 改进加载支持文件时错误的处理,如果在加载规范之前文件出错,RSpec 现在将跳过加载规范。 (David Rodríguez, #2568) * 添加对 –example-matches 的支持,以通过正则表达式运行示例。 (Sam Joseph, Matt Rider, @okothkongo1, #2586) * 添加 did_you_mean
建议,用于在示例外部遇到 LoadError
的文件名。 (@obromios, #2601) * 添加一个简化的快速修复样式格式化程序,只输出故障作为 file:line:message
。 (Romain Tartière, #2614) * 将字符串数字值转换为整数,当用于 RSpec::Configuration#fail_fast
时 (Viktor Fonic, #2634) * 当对 RSpec::Configuration#fail_fast
使用无效值时发出警告 (Viktor Fonic, #2634) * 添加对在干净环境中运行 Rake 任务的支持。 (Jon Rowe, #2632) * 在文档格式化程序中,通过其示例组/示例缩进消息。 (Samuel Williams, #2649)
rspec-expectations-3.9.0
增强功能
respond_to
匹配器现在使用来自initialize
的签名来验证对new
的检查(除非new
非标准)。 (Jon Rowe, #1072)- 为匹配器生成的描述现在使用
is expected to
而不是should
,符合我们首选的 DSL。 (Pete Johns, #1080, rspec/rspec-core#2572) - 添加使用
match_when_negated
块匹配时重新抛出期望错误的能力。 (Jon Rowe, #1130) - 当由于相同的检查输出而产生空差异时添加警告。 (Benoit Tigeot, #1126)
rspec-mocks-3.9.0
增强功能
- 通过使用互斥锁来防止死锁错误,从而提高消息期望的线程安全性。 (Ry Biesemeyer, #1236)
- 添加使用
time
作为times
的别名的能力。 例如:expect(Class).to receive(:method).exactly(1).time
。 (Pistos, Benoit Tigeot, #1271)
rspec-rails-3.9.0
增强功能
- 在支持的情况下,在生成的
rails_helper.rb
中使用__dir__
而不是__FILE__
。 (OKURA Masafumi, #2048) - 添加
have_enqueued
匹配器作为ActiveJob
匹配器的“超级”匹配器,使其更容易匹配ActiveJob
传递的电子邮件。 (Joel Lubrano, #2047) - 为 Rails 5.1 及更高版本添加系统规范生成器。 (Andrzej Sliwa, #1933)
- 添加生成器规范的生成器。 (@ConSou, #2085)
- 添加在生成控制器规范时生成路由的选项。 (David Revelo, #2134)
错误修复
- 使
ActiveJob
匹配器在对否定匹配进行排队时失败。 例如:expect { job; job; }.tonot haveenqueued_job
。 (Emric Istanful, #2069)