如何在RSpec测试中为ActiveRecord打开SQL调试日志记录?


92

我的模型有一些RSpec测试,我想像在Rails服务器模式下一样打开SQL ActiveRecord日志记录。怎么做?

我开始测试

RAILS_ENV=test bundle exec rspec my/test_spec.rb

谢谢

Answers:


55

默认情况下,您所有的数据库查询都将以测试模式记录。他们会进来的log/test.log


啊,我想在控制台上看到它。但这很公平。
lzap 2011年

21
您可以使用tail -f log/test.log
idlefingers

341

您可以尝试将ActiveRecord记录器设置为在您的测试中的stdout。如果您使用的是rspec,也许在spec帮助器中?

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

3
如果您要测试仅active_record包含的gem,则它会提供更多帮助,因为这些默认情况下不会记录SQL。
布伦登·缪尔

如果您使用的是IRuby(适用于Ruby的Jupyter),STDOUT则已被重新映射,应$stdout改为使用。
Ulysse BN

12

config.log_level = :info 

在测试环境中


4
或将其设置为config.log_level =:debug以获取最大输出,包括执行的每个SQL语句
Zack Xu

9

如果其他答案在您的情况下不起作用,请检查测试环境的“日志级别”。

它的默认值是'debug',它将输出Rails生成的SQL。如果将其设置为“ info”,则将丢失SQL。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.