Я пытаюсь использовать shared_examples как способ повторения ожиданий на нескольких маршрутах. В частности, я хочу проверить, загружаются ли какие-либо статические активы в моем верхнем и нижнем колонтитулах. Однако, я получаю сообщение об ошибке:RSpec - тестирование нескольких ожиданий по маршрутам
RSpec::Core::ExampleGroup::WrongScopeError: `it_behaves_like` is not available from within an example (e.g. an `it` block) or from constructs that run in the scope of an example (e.g. `before`, `let`, etc). It is only available on an example group (e.g. a `describe` or `context` block).
Теперь я не уверен, как исправить это. Это моя текущая настройка.
shared_examples_for 'a page' do
describe 'should load static assets' do
it 'header, footer and icons' do
expect(page).to have_css 'footer.footer'
expect(page).to have_css '#navbar-brand'
brand = page.first(:css, '#navbar-brand')
visit brand[:src]
expect(page.status_code).to be 200
end
end
end
describe 'site pages should load static assets on requests', { :type => :feature } do
after :all do
it_behaves_like 'a page'
end
it 'home page' do
visit '/'
expect(page).to have_css 'div#main-menu a', count: 5
page.all('link[rel~="icon"]').each do |fav|
visit fav[:href]
page.status_code.should be 200
end
expect(page).to have_css 'div#main-menu'
...
end
it 'about page should have icons, footer and a header' do
visit '/about'
...
end
конец
Еще одна попытка была такой:
describe 'home page' do
it_behaves_like 'a page'
end
Оба терпят неудачу по той же самой причине выше. Итак, если я хочу проверять одни и те же вещи на каждой странице, что является лучшим решением?
Это сработало! Бесконечно благодарен! Я только начал с rspec/capybara и до сих пор привык к соглашениям. – user3162553