2015-05-07 4 views
1

В одном из моих Rspec тестовых файлов, мне нужно выполнить следующее (в противном случае идентичное) испытание в нескольких различных контекстах:Как повторно использовать тот же самый тест несколько раз в RSpec

describe "view the event with request" do 
    before { 
    click_link("Swimming lessons") 
    } 

    it { should have_content "Party Supplies"} 

    describe "view the contribute form" do 
    before { 
     click_button("Party Supplies") 
    } 

    it { 
     within("#bodyPopover") { 
     should have_content('cupcakes') 
     should have_content('napkins') 
     } 
    } 


    end 

end 

Я хотел бы быть в состоянии положить все это в метод (скажем view_the_event_and_contribute_form) и просто использовать этот метод в нескольких местах в остальной части теста. Это можно сделать? Я попытался определить метод, который просто имел этот код, но он не распознал describe из этого метода.

Каков наилучший способ для этого?

ответ

0

Вы можете превратить эти тесты в shared_example:

shared_example "event with request" do 
    before { click_link("Swimming lessons") } 

    it { should have_content "Party Supplies"} 

    describe "view the contribute form" do 
    before { click_button("Party Supplies") } 

    specify { 
     within("#bodyPopover") { 
     should have_content('cupcakes') 
     should have_content('napkins') 
     } 
    } 
    end 
end 

Из других испытаний используют it_behaves_like для запуска общих примеров:

describe 'Some other awesome tests' do 
    it_behaves_like "event with request" 
end 
+0

К сожалению о задержке в ответ здесь. Это делает трюк, за исключением необходимости (по крайней мере, в моем случае) быть «shared_examples» (множественное число). Я собираюсь отредактировать и пометить, как было решено. Благодаря! – tobogranyte

0

У вас почти было это. Просто удалите блоки describe, before и it и переместите этот код в рамках простого метода.

Смежные вопросы