RSpec - how to exclude spec files in subdirectory?

Refresh

December 2018

Views

2.3k time

2

Say I have the following spec subdirectories:

lib
models
observers
workers

In the spec_helper.rb file, how do I tell rspec to exclude all spec files in the lib subdirectory?

Spork.prefork do

  ENV['RAILS_ENV'] ||= 'test'
  require File.expand_path("../../config/environment", __FILE__)
  require 'rspec/rails'

  Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}

  RSpec.configure do |config|
    config.mock_with :rspec
    config.use_transactional_fixtures = false

    config.before(:suite) do
      DatabaseCleaner.clean_with :truncation
      DatabaseCleaner.strategy = :transaction
    end

    config.before(:each) do
      DatabaseCleaner.start
    end

    config.after(:each) do
      DatabaseCleaner.clean
    end

    config.treat_symbols_as_metadata_keys_with_true_values = true
    config.filter_run :focus => true
  end

end

Spork.each_run do
  FactoryGirl.reload
end

FYI - I'm using guard to auto-reload tests.

2 answers

1

Одно из решений Фильтры исключения :

RSpec.configure do |c|
  # declare an exclusion filter
  c.filter_run_excluding :broken => true
end

describe "something" do
  it "does one thing" do
  end

  # tag example for exclusion by adding metadata
  it "does another thing", :broken => true do
  end
end

флаг исключения может быть применен к describeи contextтоже.

Кроме того , это полезно вариант конфигурации:

RSpec.configure do |c|
  c.run_all_when_everything_filtered = true
end

Так что, если все в /libисключается, вы все равно будете иметь возможность запускать функции вручнуюrspec spec/lib/

1

Не знаю, как исключить, но вы можете включить список в гвардии, как это:

guard 'rspec', :spec_paths => ['spec/models', 'spec/workers', 'spec/observers'] do
  # ...
end