Bagaimana cara mengaktifkan logging debug SQL untuk ActiveRecord di tes RSpec?


93

Saya memiliki beberapa tes RSpec untuk model saya dan saya ingin mengaktifkan logging SQL ActiveRecord seperti yang saya lihat dalam mode server Rails. Bagaimana cara melakukannya?

Saya memulai tes saya dengan

RAILS_ENV=test bundle exec rspec my/test_spec.rb

Terima kasih

Jawaban:


54

Secara default, semua kueri db Anda akan dicatat dalam mode uji. Mereka akan masuk log/test.log.


Ah, aku ingin melihatnya di konsol. Tapi ini cukup adil.
lzap

21
Anda dapat menontonnya di konsol menggunakantail -f log/test.log
idlefingers

346

Anda dapat mencoba menyetel pencatat ActiveRecord ke stdout dalam pengujian Anda di suatu tempat. Jika Anda menggunakan rspec, mungkin di helper spesifikasi?

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

3
Jauh lebih membantu jika Anda menguji permata dengan hanya active_recorddisertakan karena ini tidak mencatat SQL secara default.
Brendon Muir

Jika Anda menggunakan IRuby (Jupyter untuk Ruby), STDOUTtelah dipetakan ulang, dan Anda harus menggunakannya $stdout.
Ulysse BN

12

set

config.log_level = :info 

di lingkungan pengujian


4
atau setel ke config.log_level =: debug untuk mendapatkan output maksimum, termasuk setiap pernyataan SQL yang dijalankan
Zack Xu

9

jika orang lain menjawab tidak berfungsi dalam kasus Anda, periksa 'tingkat log' lingkungan pengujian Anda.

defaultnya adalah 'debug', yang akan menampilkan SQL yang dihasilkan oleh Rails. jika disetel ke "info", SQL akan hilang.


1

Di Anda test.rb:

Rails.application.configure do
  ...
  config.logger = ActiveSupport::Logger.new(STDOUT)
end
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.