Come si attiva la registrazione del debug SQL per ActiveRecord nei test RSpec?


92

Ho alcuni test RSpec per i miei modelli e vorrei attivare il log di SQL ActiveRecord proprio come vedo nella modalità server Rails. Come farlo?

Inizio i miei test con

RAILS_ENV=test bundle exec rspec my/test_spec.rb

Grazie

Risposte:


55

Per impostazione predefinita, tutte le query del database verranno registrate già in modalità test. Saranno dentro log/test.log.


Ah, volevo vederlo sulla console. Ma questo è abbastanza giusto.
lzap

21
Puoi guardarlo su una console usandotail -f log/test.log
idlefingers

343

Puoi provare a impostare il logger di ActiveRecord su stdout nel tuo test da qualche parte. Se stai usando rspec, forse nell'helper delle specifiche?

ActiveRecord::Base.logger = Logger.new(STDOUT)

3
Molto più utile se stai testando una gemma con solo active_recordincluso poiché questi non registrano l'SQL per impostazione predefinita.
Brendon Muir

Se stai usando IRuby (Jupyter per Ruby), STDOUTè stato rimappato e dovresti usare $stdoutinvece.
Ulysse BN

12

impostato

config.log_level = :info 

in ambiente di test


4
oppure impostalo su config.log_level =: debug per ottenere il massimo output, inclusa ogni istruzione SQL eseguita
Zack Xu

9

se altre risposte non funzionano nel tuo caso, controlla il "livello di log" del tuo ambiente di test.

il suo valore predefinito è 'debug', che restituirà l'SQL generato da Rails. se era impostato su "info", mancherà l'SQL.


1

Nel tuo test.rb:

Rails.application.configure do
  ...
  config.logger = ActiveSupport::Logger.new(STDOUT)
end
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.