首页 > 解决方案 > 如何在Rspec中按修改时间对测试进行排序

问题描述

如何覆盖 Rspec 默认排序以按文件修改时间运行测试?

标签: ruby-on-railsrubytestingrspec

解决方案


只需将此配置添加到您test_helper// spec_helperrails_helper

RSpec.configure do |config|
  config.register_ordering(:global) do |items|
    items.sort_by { |item| -File.mtime(item.metadata[:absolute_file_path]).to_i }
  end
end

说明: Rspec 允许您使用config.resgister_orderdering. 在这种情况下,我们将覆盖全局配置。您所要做的就是传递一个您定义自定义排序函数的块。

  • item.metadata[:absolute_file_path]获取测试文件的文件路径。
  • File.mtime获取文件的修改时间,减号是对它们进行反向排序

推荐阅读