2012-03-31 11 views
11

Używam Ruby na Rails 3.2.2 i rspec-rails-2.8.1. Aby utworzyć pliki spec DRY (Nie powtarzaj się) i zasiać bazę danych test chciałbym uruchomić hak before(:each) dla wszystkich tych plików spec. Oznacza to, że we wszystkich moich plików spec Mam następujący kod:Czy jest możliwe dodanie "gdzieś" haka `before (: each)`, aby mógł go uruchomić cały plik spec?

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

    ... 
end 

Czy jest możliwe aby dodać „gdzieś”, który before(:each) hak tak, że wszystkie Spec pliki mogą go uruchomić?Co radzisz?

Odpowiedz

24

W spec_helper.rb:

RSpec.configure do |config| 

    #your other config 

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

Istnieje wiele dostępnych konfiguracji. Na przykład: config.before(:each, :type => [:routing, :controller, :request])

Można nawet tworzyć własne znaczniki i kod kojarzy mu:

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

Możesz dodać przed/po haków w bloku Rspec.configure, zwykle w spec_helper:

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

zgodził :) +1 następnie – apneadiving

Powiązane problemy