Можно ли добавить "где-то" к `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