rails guide form_tag form_for form example ruby-on-rails actionview actionviewhelper

ruby on rails - guide - ¿Cómo llamar a ''time_ago_in_words'' desde un FunctionalTest?



rails post form (4)

Estoy usando la función ''time_ago_in_words'' en una vista, y necesito probar la salida en el FunctionalTest.

Pero la prueba no puede ver la función de ayuda ''time_ago_in_words''.

¿Qué debo hacer para usar estos métodos de ayuda de FunctionalTests?


¿Qué es exactamente lo que estás tratando de probar? No deberías tener que verificar el comportamiento de time_ago_in_words sí mismo, porque eso está cubierto por las propias pruebas de Rails. Si está probando uno de sus propios ayudantes que usa time_ago_in_words , la salida se puede verificar en una prueba de ayudante (que se hereda de ActionView::TestCase ).

Las pruebas funcionales están destinadas a verificar el comportamiento de los controladores (qué plantilla representan, si permiten el acceso, la redirección, etc.) que puede incluir la verificación de la presencia de ciertas etiquetas HTML (por ID). Usualmente trato de evitar usarlos para verificar el contenido de las etiquetas.


Recientemente tuve un problema similar cuando intentaba acceder a esta función desde una API, así que la envolví en una gema llamada timeywimey. Échale un vistazo: https://github.com/onetwopunch/timeywimey#usage

Le permite acceder a este ayudante desde cualquier lugar en un proyecto de Rails, así como en Sinatra y un proyecto de rubí nativo.


rails_helper.rb en rails_helper.rb

config.include ActionView::Helpers::DateHelper

y trabajo, ¡gracias a @jpemberthy!


Incluya el ActionView::Helpers::DateHelper en sus archivos test_helper.rb o test.rb Y eso es todo, desde la consola de prueba:

>> time_ago_in_words(3.minutes.from_now) NoMethodError: undefined method `time_ago_in_words'' for #<Object:0x3b0724> from (irb):4 from /Users/blinq/.rvm/rubies/ruby-1.9.1-p376/bin/irb:15:in `<main>'' >> include ActionView::Helpers::DateHelper => Object >> time_ago_in_words(3.minutes.from_now) => "3 minutes"