Як увімкнути ведення журналу налагодження SQL для ActiveRecord у тестах RSpec?


92

У мене є кілька тестів RSpec для моїх моделей, і я хотів би ввімкнути ведення журналу SQL ActiveRecord так, як я бачу в режимі сервера Rails. Як це зробити?

Я починаю свої тести з

RAILS_ENV=test bundle exec rspec my/test_spec.rb

Дякую

Відповіді:


55

За замовчуванням усі ваші запити в базі даних реєструються вже в тестовому режимі. Вони будуть у log/test.log.


Ах, я хотів побачити це на консолі. Але це досить справедливо.
lzap

21
Ви можете дивитись це на консолі за допомогоюtail -f log/test.log
idlefingers

342

Ви можете спробувати встановити для реєстратора ActiveRecord значення stdout у вашому тесті. Якщо ви використовуєте rspec, можливо, у помічнику специфікації?

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

3
Набагато корисніше, якщо ви тестуєте дорогоцінний камінь із лише active_recordвключеними, оскільки вони не реєструють SQL за замовчуванням.
Brendon Muir

Якщо ви використовуєте IRuby (Jupyter для Ruby), STDOUTбуло переназначено, і $stdoutзамість цього слід використовувати .
Ulysse BN

12

встановити

config.log_level = :info 

в тестовому середовищі


4
або встановіть його на config.log_level =: налагодження, щоб отримати максимальний результат, включаючи кожен виконаний оператор SQL
Zack Xu

9

якщо інші відповіді не працюють у вашому випадку, перевірте "рівень журналу" вашого тестового середовища.

його за замовчуванням - "налагодження", яке видасть SQL, згенерований Rails. якщо для нього встановлено значення "інформація", SQL буде відсутній.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.