2012-03-07 5 views
6

の内部クラスの名前は、私は次のHTMLコードを持っている:RSpecの2タグ

私はクラスの「アクティブ」とし、そのテキストの中のliタグを持っていることを確認する
<ul class="nav"> 
    <li class="active"> 
     <a href="https://stackoverflow.com/users/page">Page</a> 
    </li> 
    ... 
</ul> 

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

私はそれを解決:

response.body.should have_selector("li.active") do 
    have_selector('a', :content => 'Pages') 
end 
0

Watirのテストでは、:class matcherは正確な文字列一致であるという点で同様の問題がありました。 CSSクラスセレクタのようなものではありません。

我々の問題を回避するには、例えば、XPathの選択に切り替えるた:

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

警告:私は上記のコードをテストする機会がなかったです。私は部分クラス文字列に一致する@class属性に対して 'contains'をどのように使用したかを示しています。

9

あなたはCSSセレクタにクラスを追加できると思います。ような何か:

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