我想在RSpec会话开始时运行一些标有:first
的规范。所以,如果我有:
describe 'one' { ... }
describe 'two', :first { ... }
describe 'three' { ... }
我想要运行规范的顺序是two
,one
,three
。
这可以用RSpec完成吗?
注意:我知道以某种顺序运行测试会适得其反,但我需要为我们的项目快速解决方法,以便所有规范都通过(遗憾的是,某些规范编写得很糟糕,并且根据它们的运行顺序而失败)
答案 0 :(得分:1)
RSpec
您可以传递--order
flag来定义特定订单。默认情况下,此标志仅了解一些策略,例如random
或seed
,其中种子是随机顺序的特定实例。
但是,如果你深入研究Ordering
module,你会看到你可以定义新的订购策略。
有Custom
strategy明显按特定区块排序。这些策略由排序寄存器管理,并取决于:order
config。
您可以调查内部结构,根据规则定义自定义订单策略,并将其设为默认值。
答案 1 :(得分:0)
要按特定顺序运行测试,您需要按照您希望它们运行的顺序排列测试,然后使用rspec
标志运行--order default
命令:
rspec --order default
如果您在没有此标志的情况下运行rspec
,测试将以随机顺序运行(我相信您已经注意到了)。
<强>来源:
2012年Rspec添加此标志时发布的说明 - http://blog.davidchelimsky.net/blog/2012/01/04/rspec-28-is-released/