2012-03-07 19 views
6

Ho prossimo codice html:Rspec 2 - nome della classe all'interno del tag

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

voglio fare in modo che ho tag li con classe "attivo" e all'interno di quel testo.

Così, ho provato che:

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

E non funziona, ottengo tale errore:

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

Come posso risolvere il mio problema?

risposta

3

ho risolto:

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

Abbiamo riscontrato problemi simili con i test di Watir in quanto: l'identificatore di classe è una corrispondenza di stringa esatta; non come un selettore di classi CSS affatto.

La nostra soluzione era quella di passare ad un selettore XPath, ad es .:

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

Un avvertimento: non ho avuto la possibilità di testare il codice di cui sopra; Sto solo mostrando come abbiamo usato "contiene" contro l'attributo @class per far corrispondere le stringhe di classe parziali.

9

Penso che si possa aggiungere la classe al selettore css. Qualcosa di simile:

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