내 모델에 대한 몇 가지 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