2009-10-28 13 views
17

¿Por qué comandos como puts e print no aparecen en la consola cuando se ejecutan pruebas ActiveSupport :: TestCase?Salida (puts, print) en Rails Unit Tests

Hace que sea muy difícil depurar si no puedo salidas algunas inspecciones en un par de métodos.

Gracias!

Respuesta

22

Usted puede utilizar el registrador de rieles para ver su salida:

Rails::logger.debug "Interesting stuff" 

Run tail -f log/test.log en la línea de comandos (de la raíz del proyecto en una pestaña separada terminal o ventana) para ver los resultados.

+0

Sí, funcionó como un encanto! – Alexandre

+2

En los rieles 3 puede ver la salida de salida si ejecuta las pruebas con rastrillo - trace –

+0

Hmm ... ninguno de estos funciona con Rails 3, prueba de rubí regular o con spork. – Trip

3

Uso pone todo el tiempo en las pruebas cuando estoy pirateando rápidamente la depuración de una sola prueba. Por lo tanto, no utilizo la prueba de rake: *, sino que realizo la prueba individual y se muestra la salida.

ruby -Itest test/unit/user/context_test.rb 
6

He estado luchando con esto debajo de los rieles (3.2). No sé cómo han cambiado las cosas entre las versiones, pero las respuestas realmente no responden a la pregunta. En lugar de utilizar

$stdout.puts msg 

se envía a la consola junto con los otros mensajes de la consola cuando se ejecutan pruebas individuales.

+0

funciona para los carriles 2.0.2 (respuesta superior no) –

+0

respuesta más simple. Funciona en ** Rails 4.0.13 ** – RousseauAlexandre

0

Puede utilizar pone en una prueba individual de la siguiente ejemplo:

puts "\n\n #{@object.name}" 

Esto se verá algo como la siguiente manera en la ventana de terminal como las pruebas se ejecutan

Iniciado E ... AEE

Reino Unido .E

Terminado en 2.787886 segundos.

(donde @object.name == "United Kingdom" en este caso)

Es un método bastante crudo pero muy rápido para la depuración sencilla