我在 RSpec 源代码中四处寻找,发现以下内容可行。只需将此代码spec_helper.rb
或运行测试时加载的其他文件中:
RSpec.configure do |config|
config.after(:suite) do
examples = RSpec.world.filtered_examples.values.flatten
if examples.none?(&:exception)
# change the seed here
end
end
end
哈希将RSpec.world.filtered_examples
示例组与该组中的示例数组相关联。Rspec 具有过滤某些示例的功能,并且此哈希似乎仅包含实际运行的示例。
您可以设置系统的另一种方法是检查 rspec 进程的返回码。如果为 0,则所有测试都通过,您可以更改种子。
在 shell 脚本中,您可以定义一个更改种子并运行的命令:
rspec && change_seed
如果你的项目有一个 Rakefile,你可以这样设置:
task "default" => "spec_and_change_seed"
task "spec" do
sh "rspec spec/my_spec.rb"
end
task "spec_and_change_seed" => "spec" do
# insert code here to change the file that stores the seed
end
如果规范失败,则 rake 的“规范”任务将失败,并且不会继续更改种子。