Rspec 2 - имя класса внутри тега - PullRequest
6 голосов
/ 08 марта 2012

У меня следующий HTML-код:

<ul class="nav">
    <li class="active">
      <a href="/users/page">Page</a>
    </li>
    ...
</ul>

Я хочу убедиться, что у меня есть тег li с классом "active" и внутри этого текста.

Итак, я попробовал это:

response.should have_selector( "li", :class => "active" ,:content => "Page")

И это не работает, я получаю такую ​​ошибку:

Failure/Error: response.should have_selector( "li", :class => "active" ,:content => "Page")
       expected following output to contain a <li class='active'>Page</li> tag:

Как я могу решить мою проблему?

Ответы [ 3 ]

9 голосов
/ 08 марта 2012

Я думаю, вы можете добавить класс в селектор CSS.Что-то вроде:

response.body.should have_selector( "li.active", :content => 'Page')
3 голосов
/ 08 марта 2012

Я решил это:

response.body.should have_selector( "li.active") do
   have_selector('a', :content => 'Pages')
end
0 голосов
/ 08 марта 2012

У нас были похожие проблемы с тестированием Watir в том, что: class matcher - точное совпадение строки; совсем не похож на селектор классов CSS.

Наш обходной путь состоял в том, чтобы переключиться на селектор xpath, например ::1003*

response.should have_selector("li", :xpath => 'contains(@class, "active")')

Предупреждение: у меня не было возможности протестировать приведенный выше код; Я просто показываю, как мы использовали атрибут «contains» в атрибуте @class для сопоставления частичных строк класса.

...