rspec before(:each) 钩子 - 有条件地应用

rspec before(:each) hook - conditionally apply

我的 rails_helper.rb 中有以下内容:

RSpec.configure do |config|
  # ...
  config.before(:each, type: :controller) do
    # SOMETHING
  end
end

我想定义此 SOMETHING 适用的目录(在我的例子中,仅适用于 spec/controllers/api 目录下的文件)。

有机会实现吗?

您可以为您的 RSpec filter 使用更专业的名称:

RSpec.configure do |config|
  # ...
  config.before(:each, :subtype => :controllers_api) do
    # SOMETHING
  end
end

然后在 spec/controllers/api 中的 RSpec 示例中添加一些元数据:

RSpec.describe "something", :subtype => :controllers_api do
end

SOMETHING 应该 运行 仅在具有 :subtype => :controllers_api 元数据的示例上。我没有使用 :type 因为它可能定义了其他行为。