运行 RSpec 规格首先标有自定义元数据

Run RSpec specs marked with custom metadata first

我想 运行 一些在 RSpec session 开头标有 :first 的规格。所以,如果我有:

describe 'one' { ... }
describe 'two', :first { ... }
describe 'three' { ... }

我希望规格 运行 的顺序是 twoonethree

这可以用 RSpec 完成吗?

注意:我知道按特定顺序进行 运行 测试会适得其反,但我需要为我们的项目提供一个快速解决方法,以便所有规范都通过(不幸的是,有些规范写得不好,并根据顺序失败他们是 运行).

要按特定顺序 运行 您的测试,您需要按照您希望的顺序安排测试 运行 然后 运行 rspec 命令使用 --order default 标志:

rspec --order default

如果您 运行 rspec 没有此标志,测试将 运行 随机排序(我相信您已经注意到)。

来源:

2012 年 Rspec 添加此标志时的发行说明 - http://blog.davidchelimsky.net/blog/2012/01/04/rspec-28-is-released/

RSpec 有一个 --order flag 你可以传递来定义一个特定的顺序。默认情况下,此标志仅理解几个策略,例如 randomseed,其中种子是随机顺序的特定实例。

但是,如果您深入研究 Ordering module,您会发现您可以定义新的排序策略。

有个Custom strategy which apparently orders by a specific block. These strategies are managed by an ordering register, and dependent on the :order config.

您可以调查内部结构,根据您的规则定义自定义订单策略,并将其设为默认值。