2012-05-21 5 views
0

Я пытаюсь выполнить тест интеграции RSpec.Проверьте, что данный селектор не содержит содержимого (т. Е. Пуст) с использованием Rspec

Учитывая следующий HTML фрагмент:

<article id="content"> 
    <section>  
    <p>There aren't any travel promotions... yet!</p> 
    </section> 
</article> 

Когда я запускаю следующий RSpec тест:

describe SomeController do 
    render_views 

    describe "GET 'promotion_index'" do 
    it "should display an empty page given a blank page fragment and no promotions " do 
     get :promotion_index 
     response.should have_selector("#content section:first-of-type", :content => "") 
    end 
    end 
end 

Тогда тест должен терпеть неудачу

Но это не так. Он прекрасно передает, есть ли контент в селекторе.

Просто, чтобы быть ясным, я не хочу проверять, что содержание <p> нет. Я хочу проверить, что <article id="content"><section /></article> не содержит контента.

ответ

0

Вы говорите о том, что нет никаких дочерних тегов или нет текста посередине? Я не использую метод get_selector RSpec. Я также не мог заставить его работать. Я просто использую Нокогири. Вы просто передаете визуализированный объект в Nokogiri :: HTML (визуализированный), как это, и просто анализируете HTML для тестирования. Это довольно просто.

Дайте ему попробовать.

html = Nokogiri::HTML(rendered) 
html.xpath("//[@id='content']/section").each do |node| 
node.children_should be_empty? 
end 

Что-то в этом роде. Я не совсем уверен.

+0

Я хочу убедиться, что в теге раздела нет разметки - ни контента, ни HTML. Можете ли вы привести мне пример этапа огурца, который использует Nokogiri для этого? Возможно, стоит попробовать, если Капибара не сможет сделать это изначально. –

+0

Спасибо за редактирование, чтобы добавить пример. Я попробую. –