使用 --order
选项
使用 --order
选项来告诉 RSpec 如何对文件、组和示例进行排序。可用的排序方案是 defined
和 rand
。
defined
是默认值,它按规范文件加载时的定义顺序执行组和示例,但需要注意的是,每个组会在运行其嵌套示例组之前运行其示例,即使嵌套组是在示例之前定义的。
使用 rand
对组和组内的示例顺序进行随机化。嵌套组始终按从顶层到底层的顺序运行,以避免执行 before(:context)
和 after(:context)
钩子不止一次,但各级组的顺序是随机的。
使用 rand
,您还可以指定种子。
使用 recently-modified
将最最近修改的文件优先运行。可以将它与 --only-failures
结合使用来查找最新的失败规范。请注意,recently-modified
和 rand
是互斥的。
** 示例用法 **
defined
选项仅在配置文件(例如 .rspec
)中存储了 --order rand
,并且要从命令行覆盖它时才需要。
--order defined
--order rand
--order rand:123
--seed 123 # same as --order rand:123
--order recently-modified
默认顺序是 defined
假设有一个名为“example_spec.rb”的文件,其中包含
RSpec.describe "something" do
it "does something" do
end
it "in order" do
end
end
当我运行 rspec example_spec.rb --format documentation
那么输出应该包含
something
does something
in order
顺序可以是伪随机的(此处使用的种子用于修复测试的排序)
假设有一个名为“example_spec.rb”的文件,其中包含
RSpec.describe "something" do
it "does something" do
end
it "in order" do
end
end
当我运行 rspec example_spec.rb --format documentation --order rand:123
那么输出应该包含
something
in order
does something
配置自定义排序
假设有一个名为“example_spec.rb”的文件,其中包含
RSpec.configure do |config|
config.register_ordering(:reverse) do |examples|
examples.reverse
end
config.order = :reverse
end
RSpec.describe "something" do
it "does something" do
end
it "in order" do
end
end
当我运行 rspec example_spec.rb --format documentation --order reverse
那么输出应该包含
something
in order
does something
将顺序覆盖为 defined
,当设置了其他顺序时
假设有一个名为“example_spec.rb”的文件,其中包含
RSpec.configure do |config|
config.order = :random
config.seed = 123
end
RSpec.describe "something" do
it "does something" do
end
it "in order" do
end
end
当我运行 rspec example_spec.rb --format documentation --order defined
那么输出应该包含
something
does something
in order