私のモデルにはいくつかのRSpecテストがあり、Railsサーバーモードと同じようにSQL ActiveRecordロギングをオンにしたいと思います。どうやってするか?
私は私のテストを
RAILS_ENV=test bundle exec rspec my/test_spec.rb
ありがとう
回答:
デフォルトでは、すべてのdbクエリはすでにテストモードでログに記録されます。彼らは中になりますlog/test.log
。
tail -f log/test.log
テストのどこかでActiveRecordロガーをstdoutに設定してみてください。rspecを使用している場合は、おそらくスペックヘルパーにありますか?
ActiveRecord::Base.logger = Logger.new(STDOUT)
active_record
デフォルトでSQLをログに記録しないため、含まれているだけでgemをテストする場合は、はるかに役立ちます。
STDOUT
ている場合は、再マップされているため、$stdout
代わりに使用する必要があります。
他の回答があなたのケースでうまくいかない場合は、テスト環境の「ログレベル」を確認してください。
デフォルトは 'debug'で、Railsによって生成されたSQLを出力します。「info」に設定されている場合、SQLは失われます。
あなたのtest.rb
:
Rails.application.configure do
...
config.logger = ActiveSupport::Logger.new(STDOUT)
end