Does anyone know how to mock the Rails Logger then set expectations with should_receive?

Hey Guys,

I’m trying to mock the Rails Logger for the following code:


rescue TimeoutError => error
$logger.error("#{self.name} Timeout for #{path}: #{error}") and
return
rescue SocketError => error
$logger.error("#{self.name} SocketError for #{path}: #{error}")
and
return
rescue StandardError => error
$logger.error("#{self.name} Error for #{path}: #{error}") and
return
end

my failed attempt to spec:

logger = mock_model(Logger)
logger.stub(:error)
logger.should_receive(:error).with(:any_args)

Do you know of any solution for mocking this?

Also, do you think the Rails Logger is worth mocking?

Thanks very much in Advance,

On Thu, Jun 12, 2008 at 4:03 PM, john [email protected] wrote:

return
logger.stub(:error)
logger.should_receive(:error).with(:any_args)

You never set the $logger var to your new logger. So it wouldn’t do
anything.

Do you know of any solution for mocking this?

You could consider partially stubbing the rails logger.
$logger.should_receive(:error)

Also, do you think the Rails Logger is worth mocking?

I would say no.

In particular, sometimes logging is a domain requirement. If that’s
the case, you want to separate that kind of logging from all the log
info that Rails generates. Read

to get some info on mocking loggers.

Pat