2012-07-03 8 views
6

el html que he generado por rubí con:cómo probar atributos html con rspec?

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

que se traduce en:

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

pero quiero asegurar que el enlace se abre en una nueva pestaña con el

target="blank" 

atributo

la prueba rspec se parece a:

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

pero la prueba todavía pasa cuando no tengo el atributo de destino que se está generando.

+0

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

+0

Vi esta pregunta, pero ¿pueden dar más detalles sobre cómo este answe rs mi pregunta un poco más? La solución que se sugiere como respuesta para esta pregunta parece estar escrita en jQuery. No estoy seguro de cómo implementarlo con las pruebas de rspec ya que están escritas en ruby. –

Respuesta

16

Los siguientes obras para mí con capibara 1.1.2:

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

estoy usando el have_selector para manejar todos los atributos:

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

Creo que se necesita capibara tener que matcher http://rubydoc.info/github/jnicklas/capybara/Capybara/RSpecMatchers/HaveSelector

+0

hey, lo siento por la respuesta tardía. He intentado con su método pero todavía no lo veo como un error cuando no tengo el target = "blank" en el html. Tengo la gema 'capibara', '1.1.2' en el: grupo de prueba. No estoy seguro de por qué la prueba pasaría cuando todos los parámetros no están allí. –

Cuestiones relacionadas