RSpec 中规范目录的钩子之前和之后



我们在RSpec测试套件中有相当多的测试。 目录结构看起来像 -

spec/
  truncation/
    example1_spec.rb
    example2_spec.rb
    ...
  transaction/
    example1_spec.rb
    example2_spec.rb
    ...

我想在运行文件夹中的所有规范文件之前恢复测试数据库转储transaction/并在所有测试完成后将其清空。

有没有办法做到这一点?

before(:suite)钩和after(:suite)钩子,但这些钩子适用于单个规范文件。

有没有办法为 RSpec 中的目录提供前后钩子?

您是否正在使用 RSpec 3+?

您可以使用#define_derived_metadata基于文件路径匹配器添加自定义元数据。

RSpec.configure do |config|
  config.define_derived_metadata(file_path: %r{spec/truncation}) do |metadata|
    metadata[:truncation] = true
  end
  config.before(:all, :truncation) do
    # truncate that bad boy
  end
end

这与rspec-rails中使用的方法相同,用于将自定义行为添加到特定目录中的规范中,例如 spec/controllers .

文档

最新更新