2013-03-16 1 views

ответ

45

Когда раньше (: все) определяется в блоке RSpec.configure она называется перед каждым верхнего уровня, например, группы, в то время как до (: люкс) кодовый блок вызывается только один раз.

Вот пример:

RSpec.configure do |config| 
    config.before(:all) {puts "Before :all"} 
    config.after(:all) {puts "After :all"} 
    config.before(:suite) {puts "Before :suite"} 
    config.after(:suite) {puts "After :suite"} 
end 

describe "spec1" do 
    example "spec1" do 
    puts "spec1" 
    end 
end 

describe "spec2" do 
    example "spec2" do 
    puts "spec2" 
    end 
end 

Выход:

Before :suite 
Before :all 
spec1 
After :all 
Before :all 
spec2 
After :all 
After :suite 
+0

мой вопрос: «Если бы я загрузить некоторые семенные данные, как админ пользователя с помощью' перед тем suite' обыкновению, что данные будут очищены после примера бег?" – illusionist

+0

Нет, они останутся, вам придется иметь дело с ними вручную. Только до (: example) внутри транзакции. – Foton

+0

: suite и: context (=: все) находятся вне транзакции. Независимо от того, насколько глубоко вложены контексты. – Foton