运行 RSpec 规格首先标有自定义元数据
Run RSpec specs marked with custom metadata first
我想 运行 一些在 RSpec session 开头标有 :first
的规格。所以,如果我有:
describe 'one' { ... }
describe 'two', :first { ... }
describe 'three' { ... }
我希望规格 运行 的顺序是 two
、one
、three
。
这可以用 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 你可以传递来定义一个特定的顺序。默认情况下,此标志仅理解几个策略,例如 random
或 seed
,其中种子是随机顺序的特定实例。
但是,如果您深入研究 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.
您可以调查内部结构,根据您的规则定义自定义订单策略,并将其设为默认值。
我想 运行 一些在 RSpec session 开头标有 :first
的规格。所以,如果我有:
describe 'one' { ... }
describe 'two', :first { ... }
describe 'three' { ... }
我希望规格 运行 的顺序是 two
、one
、three
。
这可以用 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 你可以传递来定义一个特定的顺序。默认情况下,此标志仅理解几个策略,例如 random
或 seed
,其中种子是随机顺序的特定实例。
但是,如果您深入研究 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.
您可以调查内部结构,根据您的规则定义自定义订单策略,并将其设为默认值。