[rspec-users] How do I get logging with rspec?

Rick DeNatale rick.denatale at gmail.com
Wed Jan 30 17:13:00 EST 2008

On 1/30/08, Will Sargent <will.sargent at gmail.com> wrote:
> Say I'm testing a controller with rspec, and I have logger.debug and
> logger.error calls.
> Normally I'd like them to write to the appropriate file, but in this
> case I'd like to see the output on STDOUT.
> Is there an easy way to redirect logging in rspec to do this?
> I'm thinking that
>   controller.should_receive(:logger).and_return(logger)
> should start it off, but then how do I get the new logger to do puts
> without defining a new class?  I'm assuming there must be a "Ruby way"
> to do it.

I'd think that
should do it.

Not sure whether or not you really want to use stub! vs.
should_receive here, do you really want to require that logger be
called or just allow it?

Also if you want to set expectations on what's actually logged you
might want to do

  @log_stream = StringIO.new
  controller.stub!(:logger) and_return(Logger.new(@logstream))

and then get at the log output via something like @log_stream.string
Rick DeNatale

My blog on Ruby

More information about the rspec-users mailing list