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 测试助手 processhave_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

统计数据

文档

API 文档

Cucumber 功能

发布说明

4.0.1 / 2020-05-16

完整变更日志

错误修复

4.0.0 / 2020-03-24

完整变更日志

增强功能

错误修复

重大更改