In test_helper:
class Logger
@@log = []
def self.info(message)
@@log.push(message)
end
def self.log
@@log
end
end
But when running the tests it seems to use the regular Logger.
How to create a mock for the Logger?
Rails 3.0.7.
You need to assign your logger to the Rails.logger for Rails to use it... For you to fully implement logger, you need to implement all of the methods http://www.ruby-doc.org/stdlib-1.9.3/libdoc/logger/rdoc/Logger.html (namely #debug, #warn, #error, #fatal)
ENV["RAILS_ENV"] = "test"
require File.expand_path(File.dirname(__FILE__) + "/../config/environment")
class Logger
@@log = []
def self.info(message)
@@log.push(message)
end
def self.log
@@log
end
end
class TestLogCase < ActiveSupport::TestCase
def setup
Rails.logger = Logger
end
test "records the log" do
Rails.logger.info "My Message"
assert_true Logger.log.include?("My Message")
end
end