Можно ли добавить "где-то" хук `before (: each)`, чтобы его могли запустить все спецификации? - PullRequest
12 голосов
/ 31 марта 2012

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

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

  ...
end

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

Ответы [ 2 ]

27 голосов
/ 31 марта 2012

В 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
4 голосов
/ 31 марта 2012

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

RSpec.configure do |config|
  config.before(:each) do
    ...
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...