On Jan 12, 2011, at 9:52 AM, Chuck Remes wrote:

> 
> On Sep 30, 2010, at 10:06 AM, GregD wrote:
> 
>> Hi all,
>> 
>> I'm testing java classed using rspec and jruby.  The java super class
>> is trapping an exception and sending a custom message to stdout along
>> with the original exception meaasage.  The original exception is a
>> SAXParseException, if that really matters.  Well, my test is to see if
>> the child object class can handle a garbled XML message a certain
>> way.   The test passes, but I get the nasty java exception stuff that
>> is being sent to stdout when the tests are running, yuk.  I tried
>> closing and opening stdout before and after that particular test and
>> that did not work or I did it wrong.  And I'm not sure this is
>> desirable if the test fails.   Any ideas on this other than to replace
>> the java with ruby or have the java not to dump to stdout?  ;-)   Both
>> of which, I can not do.  But, I can live with the nastiness of this,
>> if there is no possible way around it.
> 
> I'd like to bump this message because I am facing a similar situation. 
> 
> What's a good technique for spec'ing code that prints to STDOUT yet keeps the 
> spec output nice and clean?

I prefer to avoid printing directly to STDOUT, and pass in an IO object to the 
constructor of the object doing the printing.

class Foo
  def initialize(output=$stdout)
    @output = output
  end

  def do_something_that_prints
    @output.puts "blah, de blah"
  end
end

Now implementation code can just use a Foo.new, but specs can use a 
Foo.new(output) where output is a StringIO, stub, whatever.

Make sense?
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to