2012-07-03 17 views
6

l'html che ho è generato da rubino con:come testare gli attributi html con rspec?

<%= link_to "change", "http://gravatar.com/emails" %> 

che si traduce in:

<a href="http://gravatar.com/emails">change</a> 

ma voglio assicurare che il link si apre in una nuova scheda con il

target="blank" 

attributo

il test rspec assomiglia a:

it { should have_link('change', href: 'http://gravatar.com/emails', target: '_blank') } 

ma il test passa ancora quando non è stato generato l'attributo di destinazione.

+0

http://stackoverflow.com/questions/7691052/rspec-testing-for-html-entities-in-page-content –

+0

Ho visto questa domanda, ma puoi approfondire come questa risposta la mia domanda un po 'di più? La soluzione alternativa suggerita come risposta a questa domanda sembra essere scritta in jQuery. Non sono sicuro di come lo implemento con i test rspec, come sono scritti in ruby. –

risposta

16

i seguenti lavori per me con capibara 1.1.2:

it { should have_selector("a[href='http://gravatar.com/emails'][target='_blank']") } 
0

Sto utilizzando la have_selector per gestire tutti gli attributi:

should have_selector('a', 
        :href => 'http://gravatar.com/emails', 
        :target => '_blank', 
        :content => 'change' 
        ) 

Credo che hai bisogno di avere capibara che matcher http://rubydoc.info/github/jnicklas/capybara/Capybara/RSpecMatchers/HaveSelector

+0

hey, scusa per la risposta in ritardo. Ho provato il tuo metodo ma ancora non lo vedo come un errore quando non ho il target = "vuoto" nel codice html. Ho la gemma 'capybara', '1.1.2' nel: test group. Non sono sicuro del motivo per cui il test dovrebbe passare quando tutti i parametri non sono presenti. –

Problemi correlati