【发布时间】:2011-07-11 19:08:06
【问题描述】:
我对我的模型进行了一些 RSpec 测试,我想打开 SQL ActiveRecord 日志记录,就像我在 Rails 服务器模式中看到的那样。该怎么做?
我的测试开始于
RAILS_ENV=test bundle exec rspec my/test_spec.rb
谢谢
【问题讨论】:
标签: ruby-on-rails ruby activerecord rspec-rails
我对我的模型进行了一些 RSpec 测试,我想打开 SQL ActiveRecord 日志记录,就像我在 Rails 服务器模式中看到的那样。该怎么做?
我的测试开始于
RAILS_ENV=test bundle exec rspec my/test_spec.rb
谢谢
【问题讨论】:
标签: ruby-on-rails ruby activerecord rspec-rails
默认情况下,您的所有数据库查询都将在测试模式下记录。他们将在log/test.log。
【讨论】:
tail -f log/test.log在控制台中观看
ActiveSupport::Notifications.subscribe do |*args| puts *args end
您可以尝试在某处的测试中将 ActiveRecord 记录器设置为标准输出。如果您正在使用 rspec,也许在规范助手中?
ActiveRecord::Base.logger = Logger.new(STDOUT)
【讨论】:
active_record 的 gem 会更有帮助,因为这些默认情况下不会记录 SQL。
STDOUT 已被重新映射,您应该改用 $stdout。
如果其他答案不适用于您的情况,请检查您的测试环境的“日志级别”。
它的默认值是'debug',它将输出Rails 生成的SQL。如果设置为“info”,则 SQL 将丢失。
【讨论】:
设置
config.log_level = :info
在测试环境中
【讨论】:
在你的test.rb:
Rails.application.configure do
...
config.logger = ActiveSupport::Logger.new(STDOUT)
end
【讨论】: