On 1/30/08, Will Sargent <[EMAIL PROTECTED]> 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
   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?

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
http://talklikeaduck.denhaven2.com/
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to