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

Will Sargent will.sargent at gmail.com
Wed Jan 30 18:02:03 EST 2008

> >   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
>    controller.should_receive!(:logger).and_return(Logger.new(STDOUT))
> 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?

Good question.  I think there are cases where I might want either or
both, depending on whether it's for debugging or for support purposes.

> 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

Great -- that's exactly what I need.  Thank you.


More information about the rspec-users mailing list