2013-07-04 1 views
0

Как вы можете догадаться, когда читаете заголовок, я использую Rspec для проверки кода RoR. В моих тестах я хочу проверить, что я на определенной странице после некоторых действий, а также проверить, что на этой странице присутствуют определенные элементы. Я использую следующий код для этого:Как использовать специальный счетчик RSpec для нескольких «должен иметь_селектор»

# Show page title 
it { should have_selector('title', text: "Button text") } 

# Show form fields 
it { should have_selector('input', id: "user_email") } 
it { should have_selector('input', id: "user_password") } 
it { should have_selector('input', id: "user_password_confirmation") } 
it { should have_selector('input', value: "Schrijf me in") } 

Но в другом тесте я также хочу проверить наличие на той же странице. Я могу снова использовать вышеуказанный код, но это не так.

Я хочу использовать специальный сопоставитель Rspec для этого. Но единственные примеры, которые я могу найти, требуют, чтобы аргумент передавался помощнику или мог только проверить один селектор. Как я могу написать пользовательский макет для этого?

ответ

1

Если ваши тесты одинаковы, то вы хотите shared_examples.

shared_examples 'on user home page' do 
    # Show page title 
    it { should have_selector('title', text: "Button text") } 

    # Show form fields 
    it { should have_selector('input', id: "user_email") } 
    it { should have_selector('input', id: "user_password") } 
    it { should have_selector('input', id: "user_password_confirmation") } 
    it { should have_selector('input', value: "Schrijf me in") } 
end 

# Spec File #1 
describe 'Test one' do 
    it_behaves_like 'on user home page' 
end 

# Spec File #2 
describe 'Test two' do 
    it_behaves_like 'on user home page' 
end 
+0

Спасибо. Это работает отлично. – kleinmannetje