Ruby 3 是否有 `rack-test` 的替代方案?

Is there an alternative for `rack-test` for Ruby 3?

我们正在使用 rack-test 作为我们的 Cucumber 规范。一段时间以来,我们一直在尝试迁移到 Ruby 3,目前的问题是 Cucumber 测试因 rack-test 在其内部方法中使用两个 keyword/positional 参数而崩溃。

我准备自己修补它,但看到 activity 回购中的内容很少(包括为 weeks/months 开放的 PR)我担心我会完成工作并且在那里没有人会修补它。

我看到的唯一选择是:

最后一个解决方案似乎是最好的 IMO。那么,还有其他选择吗?

所有开源软件一样,您有几个选择:

  1. 继续使用旧的软件版本(即不要使用 ruby v3.0.0)。
  2. 希望其他人为您更新依赖项。
  3. 自行更新。
  4. 停止使用图书馆。

目前,选项1完全可行; ruby 2.7 仍在积极维护中,support will probably continue until 2023-03-31。您可以这样做,只是希望选项 2 尽快可用。

选项 3 的标准做法是:

  • 分叉项目,并进行修复。
  • 打开一个拉取请求 到包含你的修复的主仓库。希望它被合并。
  • 同时,如果您需要解封,请在其他项目中引用您的分叉仓库。

这显然需要更多的努力,但我不会称之为“糟糕”的解决方案;除非您的更改是 drastic/introduce 与主项目的兼容性问题,并且两个分支不同。

至于选项 4,与几乎 any 库替换一样,总是会在 compatibility/features 之间进行一些权衡,但显然其他测试框架确实存在.这取决于您实际使用它的方式。您的里程可能会有所不同。


综上所述,对于这样一个主观的问题,我真的无法给出 objective 的答案,但我目前的建议是:如果你有 time/skill/motivation 更新到 ruby 3 现在,然后分叉依赖项并更新它。 (可能不需要进行大规模更改!)。

但是如果您没有 time/skill/motivation 来执行此操作,那么现在就坚持使用 ruby 2.7。