RSpec 테스트에서 ActiveRecord에 대한 SQL 디버그 로깅을 켜려면 어떻게해야합니까?


92

내 모델에 대한 몇 가지 RSpec 테스트가 있으며 Rails 서버 모드에서 보는 것처럼 SQL ActiveRecord 로깅을 켜고 싶습니다. 그렇게하는 방법?

나는 내 테스트를 시작합니다

RAILS_ENV=test bundle exec rspec my/test_spec.rb

감사

답변:


55

기본적으로 모든 db 쿼리는 이미 테스트 모드로 기록됩니다. 그들은 log/test.log.


아, 콘솔에서 보려고 했어요. 그러나 이것은 충분히 공평합니다.
lzap 2011 년

21
다음을 사용하여 콘솔에서 볼 수 있습니다tail -f log/test.log
idlefingers 2011 년

343

테스트 어딘가에서 ActiveRecord 로거를 stdout으로 설정할 수 있습니다. rspec을 사용하는 경우 사양 도우미에 있습니까?

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

3
active_record기본적으로 SQL을 기록하지 않기 때문에 포함 된 gem 만 테스트하는 경우 훨씬 더 유용합니다 .
Brendon Muir

IRuby (Ruby 용 Jupyter)를 사용하는 경우 STDOUT는 다시 매핑되었으므로 $stdout대신 사용해야 합니다.
Ulysse BN

12

세트

config.log_level = :info 

테스트 환경에서


4
또는 실행 된 각 SQL 문을 포함하여 최대 출력을 얻으려면 config.log_level = : debug로 설정하십시오.
Zack Xu

9

다른 답변이 귀하의 경우에 작동하지 않으면 테스트 환경의 '로그 수준'을 확인하십시오.

기본값은 'debug'이며 Rails에서 생성 한 SQL을 출력합니다. "info"로 설정된 경우 SQL이 누락됩니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.