- en
- ja
RSpec 3.7 已发布!
Sam Phippen
2017 年 10 月 17 日RSpec 3.7 刚刚发布!鉴于我们对 语义版本控制 的承诺,对于任何已经使用 RSpec 3 的用户来说,这应该是一个简单的升级,但如果我们引入了任何回归,请告知我们,我们会尽快发布一个包含修复程序的补丁版本。
RSpec 仍然是一个由社区驱动的项目,来自世界各地的贡献者都参与其中。此版本包含来自 27 位不同贡献者的 127 次提交和 31 个合并的拉取请求!
值得注意的是:这是一个比平时规模更小的版本,因为我们希望尽快将 Rails 系统测试集成提供给您。
感谢所有帮助发布此版本的人!
值得注意的变更
Rails: ActionDispatch::SystemTest
集成(系统规范)
在 Rails 5.1 中,添加了一种新的测试类型,称为系统测试。这些测试包装了 capybara 和 Rails,允许从前端 JavaScript 一直到数据库进行全栈测试体验。
长期以来,RSpec 一直拥有 功能规范,它提供了类似的集成。功能规范和系统规范之间存在一些重要的区别,值得列举。
- 如果您在功能规范中使用启用 JavaScript 的驱动程序(如 selenium 或 poltergeist),则您的测试将在与 Rails 应用程序不同的进程中运行。这意味着您的测试和被测试代码无法共享数据库事务,因此您无法使用 RSpec 内置的机制来回滚数据库更改,而是需要像 database cleaner 这样的 gem。在系统测试中,Rails 团队已经完成了艰苦的工作,确保这种情况不会发生,因此您可以安全地使用 RSpec 的机制,而无需额外的 gem。
- RSpec 的功能规范默认使用
Rack::Test
capybara 驱动程序。如果您想使用启用 JavaScript 的测试浏览器,您需要自己管理 capybara 配置。长期以来,这已被证明是使用更高级的集成(如 selenium)时难以正确实现的事情。系统规范默认使用 selenium。Rails 隐藏了配置的难度,它代表您使用 chrome 操作 capybara 和 webdriver。
因此,我们建议 Rails 5.1 用户优先使用系统规范而不是功能规范来进行完整的应用程序集成测试。我们要特别感谢 Eileen Uchitelle,她领导了在 Rails 中实现此功能。
统计数据
组合
- 总提交次数: 127
- 合并的拉取请求: 31
- 27 位贡献者:Aaron Rosenberg、Alex Shi、Alyssa Ross、Britni Alexander、Dave Woodall、Devon Estes、Hisashi Kamezawa、Ian Ker-Seymer、James Adam、Jim Kingdon、Jon Rowe、Levi Robertson、Myron Marston、Pat Allan、RustyNail、Ryan Lue、Sam Phippen、Samuel Cochran、Sergei Trofimovich、Takeshi Arabiki、Thomas Hart、Tobias Pfeiffer、Wojciech Wnętrzak、Xavier Shay、Yuji Nakayama、Zhong Zheng、ohrustynail
rspec-core
- 总提交次数: 40
- 合并的拉取请求: 10
- 11 位贡献者:Devon Estes、Ian Ker-Seymer、Jon Rowe、Levi Robertson、Myron Marston、Pat Allan、Sam Phippen、Takeshi Arabiki、Thomas Hart、Tobias Pfeiffer、Yuji Nakayama
rspec-expectations
- 总提交次数: 13
- 合并的拉取请求: 2
- 5 位贡献者:Jim Kingdon、Myron Marston、Pat Allan、Sam Phippen、Yuji Nakayama
rspec-mocks
- 总提交次数: 14
- 合并的拉取请求: 2
- 6 位贡献者:Aaron Rosenberg、Myron Marston、Pat Allan、Sam Phippen、Yuji Nakayama、Zhong Zheng
rspec-rails
- 总提交次数: 38
- 合并的拉取请求: 9
- 16 位贡献者:Alex Shi、Alyssa Ross、Britni Alexander、Dave Woodall、Hisashi Kamezawa、James Adam、Jon Rowe、Myron Marston、RustyNail、Ryan Lue、Sam Phippen、Samuel Cochran、Wojciech Wnętrzak、Xavier Shay、Yuji Nakayama、ohrustynail
rspec-support
- 总提交次数: 22
- 合并的拉取请求: 8
- 6 位贡献者:Jon Rowe、Myron Marston、Pat Allan、Sam Phippen、Sergei Trofimovich、Yuji Nakayama
文档
API 文档
Cucumber 功能
发行说明
RSpec Core
增强功能
- 添加
-n
别名为--next-failure
。(Ian Ker-Seymer,#2434) - 改进与 Ruby 2.3+ 上的
--enable-frozen-string-literal
选项的兼容性。(Pat Allan,#2425,#2427,#2437) - 对于已跳过的示例组,不要运行
:context
钩子。(Devon Estes,#2442) - 将
errors_outside_of_examples_count
添加到 JSON 格式化程序。(Takeshi Arabiki,#2448)
错误修复
- 改进与冻结字符串文字标志的兼容性。(#2425,Pat Allan)
RSpec Expectations
增强功能
- 改进与 Ruby 2.3+ 上的
--enable-frozen-string-literal
选项的兼容性。(Pat Allan,#997)
RSpec Mocks
增强功能
- 改进与 Ruby 2.3+ 上的
--enable-frozen-string-literal
选项的兼容性。(Pat Allan,#1165)
错误修复
- 修复
hash_including
和hash_excluding
,使其能够针对Hash
的子类工作。(Aaron Rosenberg,#1167)
RSpec Rails
错误修复
- 防止在多线程环境中,“模板未渲染”日志消息出错。(Samuel Cochran,#1831)
- 在错误消息中正确生成作业名称。(Wojciech Wnętrzak,#1814)
增强功能
- 允许
be_a_new(...).with(...)
匹配器接受属性值的匹配器。(Britni Alexander,#1811) - 仅在完全加载时配置 RSpec Mocks。(James Adam,#1856)
- 与
ActionDispatch::SystemTestCase
集成。(Sam Phippen,#1813)
RSpec Support
增强功能
- 改进与 Ruby 2.3+ 上的
--enable-frozen-string-literal
选项的兼容性。(Pat Allan,#320) - 添加
Support.class_of
用于提取任何对象的类。(Yuji Nakayama,#325)
错误修复
- 修复递归常量支持,使其在遇到从
#to_str
引发奇怪错误的错误类时不会崩溃。(Myron Marston,#317)