Можно ли добавить "где-то" к `before (: each)` hook, чтобы весь файл спецификации мог его запустить?

Я использую Ruby on Rails 3.2.2 и rspec-rails-2.8.1. Чтобы сделать мои файлы спецификаций DRY (Do not Repeat Yourself) и засеять базу test, я хотел бы запустить hook before(:each) для всех этих файлов спецификаций. То есть во всех моих файлах спецификаций у меня есть следующий код:

describe 'test description' do
  before(:each) do
    load "#{Rails.root}/db/seeds.rb"
  end

  ...
end

Можно ли добавить "где-то", что before(:each) hook, чтобы все файлы спецификаций могли запускать его? Что вы посоветуете?

Ответ 1

В spec_helper.rb:

RSpec.configure do |config|

  #your other config

  config.before(:each) do
    #your code here
  end
end

Имеется много настроек. Например: config.before(:each, :type => [:routing, :controller, :request])

Вы даже можете создать свои собственные теги и связать с ним код:

config.around :each, unobstrusive: true do |example|
  Capybara.current_driver = :rack_test 
  example.run
  Capybara.current_driver = :selenium
end

Ответ 2

Вы можете добавить до/после перехвата в блоке Rspec.configure, обычно в вашем spec_helper:

RSpec.configure do |config|
  config.before(:each) do
    ...
  end
end