ฉันมีการทดสอบ RSpec สำหรับโมเดลของฉันและฉันต้องการเปิดการบันทึก SQL ActiveRecord เหมือนที่ฉันเห็นในโหมดเซิร์ฟเวอร์ Rails ต้องทำอย่างไร?
ฉันเริ่มการทดสอบด้วย
RAILS_ENV=test bundle exec rspec my/test_spec.rb
ขอบคุณ
ฉันมีการทดสอบ RSpec สำหรับโมเดลของฉันและฉันต้องการเปิดการบันทึก SQL ActiveRecord เหมือนที่ฉันเห็นในโหมดเซิร์ฟเวอร์ Rails ต้องทำอย่างไร?
ฉันเริ่มการทดสอบด้วย
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 ตามค่าเริ่มต้น
STDOUT
ได้รับการแมปใหม่แล้วและคุณควรใช้$stdout
แทน
ชุด
config.log_level = :info
ในสภาพแวดล้อมการทดสอบ
หากคำตอบอื่นไม่ได้ผลในกรณีของคุณโปรดตรวจสอบ 'ระดับบันทึก' ของสภาพแวดล้อมการทดสอบของคุณ
ค่าเริ่มต้นคือ 'debug' ซึ่งจะส่งออก SQL ที่สร้างโดย Rails หากตั้งค่าเป็น "ข้อมูล" SQL จะหายไป
ในtest.rb
:
Rails.application.configure do
...
config.logger = ActiveSupport::Logger.new(STDOUT)
end