RSpec Rails 4.0 已发布!
Benoit Tigeot, Jon Rowe 和 Phil Pirozhkov
2020 年 5 月 27 日RSpec Rails 4.0 已发布!鉴于我们对 语义版本控制 的承诺,这是一个重大版本,因此包含重大更改。主要变化是我们放弃了对低于 Rails 5 版本的支持,并且仅对 Rails 4.2 提供软性支持。
像往常一样,如果您发现任何新引入的错误,请告诉我们,我们会尽快发布修复程序。
RSpec 仍然是一个由社区驱动的项目,来自世界各地的贡献者参与其中。此版本包含来自 27 位不同贡献者的 258 次提交和 56 个合并的拉取请求!
感谢所有帮助发布此版本的人员!
重大变更
支持 Rails 6,包括对 ActionCable 和 ActiveMailbox 的支持。
重大更改
RSpec Rails 4 仅支持 Rails 5 和 6。这符合我们新的版本策略,即保持 RSpec Rails 的主要版本与支持的 Rails 版本一致。
这意味着我们不再支持低于 2.2 版本的 Ruby 版本,这与 Rails 5 支持的 Ruby 版本一致。
在此过渡期间,我们将此版本的 Rails 版本限制为 4.2,以便为 Rails 4.2 提供“软性支持”,但我们强烈建议您升级 Rails 以使用 4.0.0。
移除 RSpec gem 的版本锁定
rspec-rails
gem 不再与其他 RSpec gem 的版本锁定,我们现在将随每个新的 Rails 版本发布 rspec-rails
,使其与支持的主要版本保持一致。
改进 JRuby 支持
我们改进了 JRuby 支持,RSpec Rails 4 充分支持 Rails 5 和 6 上的 JRuby。
支持 Action Cable
我们现在支持 通道规范,以便轻松测试您的 Action Cable 通道。通道规范
会引入 ActionCable::Channel::TestCase
,其中包含它提供的所有行为和断言,以及 RSpec 自身的行为和期望。
支持 Action Mailbox
Rails 6 添加了 Action Mailbox 用于处理传入的电子邮件。RSpec Rails 4 添加了对 邮箱规范 的支持,使用 Rails 邮箱的测试助手。
例如,使用 Rails 测试助手 process
和 have_been_delivered
匹配器
RSpec.describe InboxMailbox, type: :mailbox do
it "marks email as delivered when number tag in subject is valid" do
mail = Mail.new(
from: "replies@example.com",
subject: "[141982763] support ticket"
)
mail_processed = process(mail)
expect(mail_processed).to have_been_delivered
end
end
生成器的改进
如果您使用生成器,则有一些改进:- 生成的文件中的默认哈希语法现在是 Ruby 1.9 样式,以匹配 Rails 约定 - 默认情况下,会生成请求规范而不是控制器规范 - 有新的 生成器 可用(通道、生成器、邮箱…)
允许在系统规范中配置 Active Job queue_adapter
有些人希望使用特定队列适配器运行 Active Job。现在,您可以在系统规范中选择所需的队列适配器。
before do
ActiveJob::Base.queue_adapter = :inline
end
使用 Puma 时静默日志输出
默认情况下,Puma 在运行系统规范时不再打印日志。
能够手动关闭 Active Record 支持
当使用没有 ActiveRecord 的 Rails 或者使用其他 ORM 或数据库时,例如 Sequel、ROM、Mongoid 等。我们可能会错误地检测到正在使用 ActiveRecord,因为其他 gem 会自动加载常量,我们现在支持在未配置的情况下手动关闭 Active Record 支持:config.use_active_record = false
统计数据
- 总提交次数: 285
- 合并的拉取请求: 63
- 31 位贡献者:Andrew White, Anton Rieder, Benoit Tigeot, Jon Rowe, David Revelo, Giovanni Kock Bonetti, Ignatius Reza, James Dabbs, Joel AZEMAR, John Hawthorn, Jonathan Rochkind, Kieran O'Grady, Marc-André Lafortune, Moshe Kamensky, OKURA Masafumi, Olle Jonsson, Pedro Paiva, Penelope Phippen, Phil Pirozhkov, Piotr W, Seb Jacobs, Tanbir Hasan, Viacheslav Bobrov, Vladimir Dementyev, Xavier Shay, alpaca-tc, pavel, ta1kt0me, yalab
文档
API 文档
Cucumber 功能
发布说明
4.0.1 / 2020-05-16
错误修复
- 在系统规范中调用
driven_by
时移除警告。(Aubin Lorieux,#2302) - 修复作业匹配器中
#at
的时间比较。(Jon Rowe, Markus Doits, #2304) - 允许
have_enqueued_mail
在使用<Class>.delivery_job=
设置ActionMailer::DeliveryJob
的子类时进行匹配。(Atsushi Yoshida #2305) - 恢复 Ruby 2.2.x 兼容性。(Jon Rowe, #2332)
- 在 gem 规范中添加
required_ruby_version
。(Marc-André Lafortune, #2319, #2338)
4.0.0 / 2020-03-24
增强功能
- 添加对 Rails 6 的支持。(Penelope Phippen, Benoit Tigeot, Jon Rowe, #2071)
- 添加对 Rails 5.2 和 6 上的 JRuby 的支持
- 添加对参数化邮件器的支持(Ignatius Reza, #2125)
- 添加 ActionMailbox 规范助手和测试类型(James Dabbs, #2119)
- 添加 ActionCable 规范助手和测试类型(Vladimir Dementyev, #2113)
- 在使用
have_enqueued_mail
时添加对部分参数的支持(Ignatius Reza, #2118, #2125) - 添加对
have_enqueued_job
的时间参数支持(@alpaca-tc, #2157) - 改进视图规范渲染选项中的路径解析。(John Hawthorn, #2115)
- 添加路由规范模板作为生成控制器规范的选项。(David Revelo, #2134)
- 将参数匹配器支持添加到
have_enqueued_*
匹配器。(Phil Pirozhkov, #2206) - 将生成的模板切换为使用 ruby 1.9 哈希键。(Tanbir Hasan, #2224)
- 添加
have_been_performed
/have_performed_job
/perform_job
ActiveJob 匹配器(Isaac Seymour, #1785) - 在生成控制器时默认生成请求规范而不是控制器规范(Luka Lüdicke, #2222)
- 允许
ActiveJob
匹配器#on_queue
修饰符接受符号队列名称。(Nils Sommer, #2283) - 脚手架生成器现在优先生成请求规范而不是控制器规范。(Luka Lüdicke, #2288)
- 添加禁用 ActiveRecord 的配置选项。(Jon Rowe, Phil Pirozhkov, Hermann Mayer, #2266)
- 在运行系统规范时设置
ActionDispatch::SystemTesting::Server.silence_puma = true
。(ta1kt0me, Benoit Tigeot, #2289)
错误修复
EmptyTemplateHandler.call
现在需要在 Rails 6 中支持一个额外的参数。(Pavel Rosický, #2089)- 抑制来自
SQLite3Adapter.represent_boolean_as_integer
的警告,该警告已弃用。(Pavel Rosický, #2092) ActionView::Template#formats
已弃用,并被ActionView::Template#format
替换。(Seb Jacobs, #2100)- 替换
before_teardown
以及after_teardown
以确保正确生成屏幕截图。(Jon Rowe, #2164) ActionView::FixtureResolver#hash
已重命名为ActionView::FixtureResolver#data
。(Penelope Phippen, #2076)- 防止由于钩子优先级而调用
driven_by(:selenium)
。(Takumi Shotoku, #2188) - 防止在 Rails 6.1 开发版本上加载夹具时抛出
WrongScopeError
。(Edouard Chin, #2215) - 修复 Mocha 模拟支持与
should
。(Phil Pirozhkov, #2256) - 恢复以前在特征规范中设置
default_url_options
的条件检查,防止某些情况下出现NoMethodError
。(Eugene Kenny, #2277) - 允许在系统规范中更改
ActiveJob::Base.queue_adapter
。(Jonathan Rochkind, #2242) rails generate generator
命令现在创建相关的规范文件(Joel Azemar, #2217)- 放松
capybara
版本上限约束以允许使用 Capybara 3.x(Phil Pirozhkov, #2281) - 在每个示例后清除 ActionMailer 测试邮箱(Benoit Tigeot, #2293)
重大更改
- 放弃对低于 5.0 版本的 Rails 的支持
- 放弃对低于 2.2 版本的 Ruby 的支持