probando las vistas
TRANSCRIPT
![Page 1: Probando las vistas](https://reader036.vdocuments.site/reader036/viewer/2022082811/558ebbe91a28ab8b1f8b46a8/html5/thumbnails/1.jpg)
Probando las vistas
con RSpec::Rails
![Page 2: Probando las vistas](https://reader036.vdocuments.site/reader036/viewer/2022082811/558ebbe91a28ab8b1f8b46a8/html5/thumbnails/2.jpg)
Porque es importante?
Es lo que TU usuario final ve!Pocos desarrolladores se 'molestan' en probar vistas.Generalmente es el area con codigo de menor calidad.Estas desarrollando una aplicación web!Menos QA por hacer.Es mas rapido que probarlo en Integration tests.BDD (y TDD) requieren crear la prueba primero :o
![Page 3: Probando las vistas](https://reader036.vdocuments.site/reader036/viewer/2022082811/558ebbe91a28ab8b1f8b46a8/html5/thumbnails/3.jpg)
Te imaginas:
WTF!!! ->
![Page 4: Probando las vistas](https://reader036.vdocuments.site/reader036/viewer/2022082811/558ebbe91a28ab8b1f8b46a8/html5/thumbnails/4.jpg)
Pero, porque no mejor...
Usar los Integration o Acceptance Tests para esto.- Son mas lentos- Sera mas dificil saber que fallaUsar render_view (integrate_views) en los RSpec::Controllers- Aislar bugs entre vista/controllerDejarlo para probar manualmente...No probar...
![Page 5: Probando las vistas](https://reader036.vdocuments.site/reader036/viewer/2022082811/558ebbe91a28ab8b1f8b46a8/html5/thumbnails/5.jpg)
Como?
No probar toda la vista, solo elementos claves.Ruby on Rails provee assetors para probar:
assert_selectassert_select_emailassert_select_rjsassert_select_encodedcss_select
RSpec tambien lo soporta, y es el que usaremos :]
![Page 6: Probando las vistas](https://reader036.vdocuments.site/reader036/viewer/2022082811/558ebbe91a28ab8b1f8b46a8/html5/thumbnails/6.jpg)
RSpec::Rails Views
![Page 7: Probando las vistas](https://reader036.vdocuments.site/reader036/viewer/2022082811/558ebbe91a28ab8b1f8b46a8/html5/thumbnails/7.jpg)
Métodos disponibles
Conveniences assignsflash, params, session
Expectations (response)containhave_taghave_selectorhave_xpath
(ademas match_*, assert_*, assert_not_*)rendered & view helpers
![Page 8: Probando las vistas](https://reader036.vdocuments.site/reader036/viewer/2022082811/558ebbe91a28ab8b1f8b46a8/html5/thumbnails/8.jpg)
Probemos:#index view:
#index_spec.rb
![Page 9: Probando las vistas](https://reader036.vdocuments.site/reader036/viewer/2022082811/558ebbe91a28ab8b1f8b46a8/html5/thumbnails/9.jpg)
Que mas?
share_examples_forPara evitar repetir la misma prueba entre vistas que comparten parciales o funcionalidad.
Probar toda logica en la vista (helpers)
Si bien lo ideal es no revisar CSS, si se deberia revisar las clases/ids aplicados a los elementos clave.
![Page 10: Probando las vistas](https://reader036.vdocuments.site/reader036/viewer/2022082811/558ebbe91a28ab8b1f8b46a8/html5/thumbnails/10.jpg)
Links interesantes:
http://rspec.info/rails/writing/views.html
http://rspec.info/documentation/
http://guides.rubyonrails.org/testing.html#testing-views
Gracias :)