On Tue, 24 Aug 2004 17:47:42 -0700 (PDT), Ovid
<[EMAIL PROTECTED]> wrote:
> --- Peter Kay <[EMAIL PROTECTED]> wrote:
> > Ok, what's the elegent way to ignore/dispose of the output the tested
> > module produces?
>
> What I do whenever this happens is to move the printing code to a subroutine
> or method and
> override that to capture the output. So if I have something like this:
>
> sub Foo::_print {
> print shift;
> }
The danger here is you're altering the code before you test it. And
its a potentially wide-spread and invasive change, hunting down all
the prints to STDOUT. And its a glassbox test, you're making
assumptions about the internal implementation. Tying avoids all this
and you can still capture the output.
I'm not saying having your own print subroutine is a bad idea. In
fact I often wind up doing this to guard against stray bits of magic.
sub _print {
local($\, $,);
print @_;
}
But I do that after the code is tested.