Sometimes digging through logs is the best way to figure out what's going on.
When you run your test suite, logs are not printed out by default (although written to test.log
– who cares?).
We provide a recipe to turn verbose logging for a specific example/group.
NOTE: Rails only.
Drop this line to your rails_helper.rb
/ spec_helper.rb
/ test_helper.rb
/ whatever:
require "test_prof/recipes/logging"
To turn on logging globally use LOG
env variable:
# log everything to stdout
LOG=all rspec ...
# or
LOG=all rake test
# log only Active Record statements
LOG=ar rspec ...
NOTE: RSpec only.
Activate logging by adding special tag – :log
:
# Add the tag and you will see a lot of interesting stuff in your console
it "does smthng weird", :log do
# ...
end
# or for the group
describe "GET #index", :log do
# ...
end
To enable only Active Record log use log: :ar
tag:
describe "GET #index", log: :ar do
# ...
end
For more granular control you can use with_logging
(log everything) and
with_ar_logging
(log Active Record) helpers:
it "does somthing" do
do_smth
# show logs only for the code within the block
with_logging do
# ...
end
end
NOTE: in order to use this helpers with Minitest you should include the TestProf::Rails::LoggingHelpers
module manually:
class MyLoggingTest < Minitest::Test
include TestProf::Rails::LoggingHelpers
end