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

lza*_*zap 85 ruby activerecord ruby-on-rails rspec-rails

我的模型有一些RSpec测试,我想打开SQL ActiveRecord日志,就像我在Rails服务器模式中看到的那样.怎么做?

我开始测试了

RAILS_ENV=test bundle exec rspec my/test_spec.rb
Run Code Online (Sandbox Code Playgroud)

谢谢

Geo*_*rge 317

您可以尝试在某个地方将ActiveRecord记录器设置为stdout.如果您正在使用rspec,可能在规范助手中?

ActiveRecord::Base.logger = Logger.new(STDOUT)
Run Code Online (Sandbox Code Playgroud)

  • 如果要测试仅包含“ active_record”的gem,则它会更加有用,因为这些默认情况下不会记录SQL。 (2认同)

idl*_*ers 52

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

  • 您可以使用`tail -f log/test.log`在控制台中观看它 (19认同)

小智 9

config.log_level = :info 
Run Code Online (Sandbox Code Playgroud)

在测试环境中

  • 或者将其设置为config.log_level =:debug以获得最大输出,包括执行的每个SQL语句 (3认同)

Siw*_*申思维 7

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

它的默认值是'debug',它将输出Rails生成的SQL.如果它被设置为"info",则SQL将丢失.