103 votes

Comment activer la journalisation de débogage SQL pour ActiveRecord dans les tests RSpec ?

J'ai quelques tests RSpec pour mes modèles et je voudrais activer la journalisation SQL ActiveRecord comme je le vois dans le mode serveur Rails. Comment faire ça ?

Je commence mes tests avec

RAILS_ENV=test bundle exec rspec my/test_spec.rb

Merci

386voto

George Points 720

Vous pouvez essayer de définir l'enregistreur ActiveRecord sur stdout dans votre test quelque part. Si vous utilisez rspec, peut-être dans le spec helper ?

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

57voto

idlefingers Points 15957

Par défaut, toutes vos requêtes db seront déjà enregistrées en mode test. Ils seront dans log/test.log.

11voto

Nicolai Points 11

définir

config.log_level = :info 

dans un environnement de test

8voto

Siwei Shen Points 5814

si les autres réponses ne fonctionnent pas dans votre cas, veuillez vérifier le « niveau de journal » de votre environnement de test.

sa valeur par défaut est 'debug', qui produira le SQL généré par Rails. s'il était défini sur "info", le SQL sera manquant.

2voto

Dans votre test.rb :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X