¿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

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.


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)

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


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.


1

En tu test.rb:

Rails.application.configure do
  ...
  config.logger = ActiveSupport::Logger.new(STDOUT)
end
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.