Как включить ведение журнала отладки SQL для ActiveRecord в тестах RSpec?


93

У меня есть несколько тестов RSpec для моих моделей, и я хотел бы включить ведение журнала SQL ActiveRecord так же, как я это вижу в режиме сервера Rails. Как это сделать?

Я начинаю свои тесты с

RAILS_ENV=test bundle exec rspec my/test_spec.rb

Благодарность

Ответы:


54

По умолчанию все ваши запросы к базе данных будут регистрироваться уже в тестовом режиме. Они будут внутри log/test.log.


Ах, я хотел увидеть это на консоли. Но это справедливо.
lzap 09

21
Вы можете посмотреть это в консоли, используяtail -f log/test.log
idlefingers 09

346

Вы можете попробовать установить для регистратора 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 =: debug, чтобы получить максимальный результат, включая каждый выполненный оператор SQL
Зак Сю,

9

если другие ответы не работают в вашем случае, проверьте «уровень журнала» вашей тестовой среды.

по умолчанию он «отладка», который выводит SQL, сгенерированный Rails. если он был установлен в "info", SQL будет отсутствовать.


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.