我将Capybara与Rspec一起使用,并在我的页面上显示以下代码:
<div class="pagination pagination-centered">
<ul>
// ...
<li class="last">
<a href="/en/articles?page=2">Last »</a>
</li>
</ul>
</div>
我想检查一个div
以“以分页为中心的分类”存在的请求。我试过这个:
it "should have pagination" do
page.should have_selector('div#pagination pagination-centered')
end
而且:
it "should have pagination" do
page.should have_selector('div', :class => 'pagination pagination-centered')
end
既不奏效。我该如何解决这个问题?
答案 0 :(得分:10)
好的,我找到了解决方案。我应该使用have_css
方法:
it "should have pagination" do
page.should have_css('div.pagination.pagination-centered')
end
答案 1 :(得分:5)
expect(page).to have_selector :css, 'nav li.active'
答案 2 :(得分:1)
关于OP:
感谢您分享您的想法,烦恼和解决方案,ExiRe - 它帮助我找到解决自己问题的方法。虽然我自己使用Rspec,而不是使用Capybara,但我的一个测试产生了假阴性:
它{should have_selector('div.pagination')}
但是,在我的浏览器中检查html会告诉我:
&LT; div class =“pagination”&gt;
我把测试改为(有点)类似于你最初的两个实验中的后者:
它{should have_selector('div',:class =&gt;'pagination')}
现在它过去了。
答案 3 :(得分:1)
这是我在本页前面的例子中尝试(并且测试失败)之后最终为我工作的(也使用Capybara和Rspec):
it { should have_selector('div', 'pagination.pagination-centered') }