【问题标题】:Before and After hooks for a spec directory in RSpecRSpec 中规范目录的前后挂钩
【发布时间】:2015-04-15 13:46:25
【问题描述】:

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

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

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

有没有办法做到这一点?

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

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

【问题讨论】:

    标签: ruby-on-rails ruby rspec


    【解决方案1】:

    您使用的是 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 中使用的same method,用于向特定目录中的规范添加自定义行为,例如spec/controllers.

    Docs

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-11
      • 1970-01-01
      • 2015-10-08
      • 1970-01-01
      相关资源
      最近更新 更多