Jak włączyć rejestrowanie debugowania SQL dla ActiveRecord w testach RSpec?


93

Mam kilka testów RSpec dla moich modeli i chciałbym włączyć rejestrowanie SQL ActiveRecord, tak jak widzę w trybie serwera Rails. Jak to zrobić?

Zaczynam testy od

RAILS_ENV=test bundle exec rspec my/test_spec.rb

Dzięki

Odpowiedzi:


54

Domyślnie wszystkie zapytania dotyczące bazy danych będą rejestrowane już w trybie testowym. Będą w środku log/test.log.


Ach, chciałem to zobaczyć na konsoli. Ale to wystarczy.
lzap

21
Możesz to obejrzeć na konsoli za pomocątail -f log/test.log
idlefingers

346

Możesz spróbować ustawić rejestrator ActiveRecord na stdout w swoim teście. Jeśli używasz rspec, może w pomocniku specyfikacji?

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

3
O wiele bardziej przydatne, jeśli testujesz klejnot tylko z active_recorddołączonym, ponieważ domyślnie nie rejestrują one kodu SQL.
Brendon Muir,

Jeśli używasz IRuby (Jupyter for Ruby), STDOUTzostał zmieniony i powinieneś użyć $stdoutzamiast tego.
Ulysse BN

12

zestaw

config.log_level = :info 

w środowisku testowym


4
lub ustaw na config.log_level =: debug, aby uzyskać maksymalne wyniki, w tym każdą wykonaną instrukcję SQL
Zack Xu

9

jeśli inne odpowiedzi nie działają w Twoim przypadku, sprawdź „poziom dziennika” swojego środowiska testowego.

jego domyślną wartością jest „debug”, który wyświetli kod SQL wygenerowany przez Railsy. jeśli była ustawiona na „info”, nie będzie kodu SQL.


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.