(Rails) Advertencias molestas de Assert_Select

¿Alguien sabe cómo hacer que assert_select no genere todas esas advertencias html desagradables durante una prueba de rake? Ya sabes, como estas cosas:

.ignoring attempt to close body with div opened at byte 1036, line 5 closed at byte 5342, line 42 attributes at open: {"class"=>"inner02"} text around open: "\r\t\r\t<body class=\"inner02" text around close: "\t
\r\t\t\t
\r\t\t
\r\t\r</ht"

Gracias

Es más bien que su código está generando HTML no válido. Sugiero ejecutarlo a través de un validador y corregir todos los errores de validación.

Puede averiguar qué prueba se encontró con el problema utilizando el indicador TESTOPTS v: (ex. De paquete) prueba de rastrillo TESTOPTS = “- v”

Esto le dará:

 test: Request the homepage should have a node list. (PresentControllerTest): . test: Request the homepage should have the correct title. (PresentControllerTest): ignoring attempt to close div with body opened at byte 4378, line 89 closed at byte 17745, line 393 attributes at open: {"class"=>"colleft"} text around open: "class=\"colmid\"> \n\t\t\t
\n \n\n\n" ignoring attempt to close div with html opened at byte 4378, line 89 closed at byte 17753, line 394 attributes at open: {"class"=>"colleft"} text around open: "class=\"colmid\"> \n\t\t\t
\n \n\n\n" . test: Request the homepage should not set the flash. (PresentControllerTest): . test: Request the homepage should respond with 200. (PresentControllerTest): .

El escáner HTML de Rails espera XHTML, si está utilizando HTML4 donde las tags no tienen tags de cierre explícitas, puede recibir esta advertencia … no parece un problema resuelto

Lo que me gustaría es saber de dónde viene la advertencia. El hecho de que no especifique la prueba o el controlador / acción que genera el HTML no válido es el gran problema para mí.

Tuve algunos problemas después de una actualización a Rails 3.0.9 y HAML 3.1.2. Lo que hice fue silenciar esas salidas feas con el siguiente código en * test_helper.rb *

 # Wrap up the method assert_select because after updating to Rails 3.0.9 and HAML 3.1.2, # I don't know why but it was raising warnings like this: # ignoring attempt to close section with body # opened at byte 6157, line 128 # closed at byte 16614, line 391 # attributes at open: {"class"=>"left-column"} # text around open: "->\n\n\n\n\n
\n\n\n\n" # But the HTML seems to be valid (in this aspects) using a HTML validator. ActionDispatch::Assertions::SelectorAssertions.class_eval do alias_method :assert_select_original, :assert_select def assert_select(*args, &block) original_verbosity = $-v # store original output value $-v = nil # set to nil assert_select_original(*args, &block) $-v = original_verbosity # and restre after execute assert_select end end

De todos modos, no recomiendo usar una solución como esta. Úselo solo si tiene prisa, y hágale un buen comentario para explicar a otros desarrolladores por qué está ese trozo de código extraño allí.

Para mí, la causa era válida pero mal formada HAML.

Esto es lo que yo tenía:

 %ul %li = link_to "Help", help_url - if current_user %li = link_to "Users", users_url = link_to "Logout", logout_url - else = link_to "Login", login_url 

Esto es lo correcto para lo que quería hacer:

 %ul %li = link_to "Help", help_url %li - if current_user = link_to "Users", users_url = link_to "Logout", logout_url - else = link_to "Login", login_url 

La mejor manera de rastrear esto es mirar detenidamente el “texto alrededor de abierto” y “texto alrededor de cerrar” e intentar rastrear dónde se abre la plantilla en la plantilla.

Incluso si realiza la rake test TESTOPTS="-v" y el error parece provenir de sus plantillas de vista, NO olvide verificar el diseño de la aplicación html. Esto me sucedió y me llevó unos minutos más de lo que me gustaría admitir yendo y viniendo entre un par de archivos index.html.erb antes de que finalmente lo descubriera. Lo mismo ocurre con los parciales prestados.

Intereting Posts