¿Cómo activo el registro de depuración de SQL para ActiveRecord en las pruebas de RSpec?

92

Tengo algunas pruebas RSpec para mis modelos y me gustaría activar el registro de SQL ActiveRecord tal como veo en el modo de servidor Rails. ¿Como hacer eso?

Comienzo mis pruebas con

RAILS_ENV=test bundle exec rspec my/test_spec.rb

Gracias

lzap
fuente

Respuestas:

55

De forma predeterminada, todas sus consultas de base de datos ya se registrarán en modo de prueba. Estarán adentro log/test.log.

dedos inactivos
fuente
Ah, quise verlo en la consola. Pero esto es bastante justo.
lzap
21
Puedes verlo en una consola usandotail -f log/test.log
idlefingers
343

Puede intentar configurar el registrador ActiveRecord en salida estándar en su prueba en algún lugar. Si está usando rspec, ¿tal vez en el asistente de especificaciones?

ActiveRecord::Base.logger = Logger.new(STDOUT)
Jorge
fuente
3
Mucho más útil si está probando una gema con solo active_recordincluida, ya que no registran el SQL de forma predeterminada.
Brendon Muir
Si está utilizando IRuby (Jupyter para Ruby), STDOUTse ha reasignado y debería utilizar $stdouten su lugar.
Ulysse BN
12

conjunto

config.log_level = :info 

en el entorno de prueba

Nicolai
fuente
4
o configúrelo en config.log_level =: depurar para obtener el máximo rendimiento, incluida cada declaración SQL ejecutada
Zack Xu
9

Si otras respuestas no funcionan en su caso, verifique el 'nivel de registro' de su entorno de prueba.

su valor predeterminado es 'debug', que generará el SQL generado por Rails. si se estableció en "info", faltará el SQL.

Siwei Shen 申思维
fuente
1

En tu test.rb:

Rails.application.configure do
  ...
  config.logger = ActiveSupport::Logger.new(STDOUT)
end
Pere Joan Martorell
fuente