in reply to Re: Tests for 'printing' code
in thread Tests for 'printing' code

Thanks, jeffa. I expected that printing from subroutines will be blamed here. :) But how you will test sub print_foo_message then? Of course, it's too simple, but it is just an example. I'm interested in testing the output, at least, I need to test the fact that something was printed.

--dda

Replies are listed 'Best First'.
3Re: Tests for 'printing' code
by jeffa (Bishop) on Oct 19, 2003 at 15:31 UTC
    You don't. :) It's just a canned message. Why do you need to test if something was printed? That's not very helpful. Instead test what is about to be printed, before you print it. In fact, you don't need to print anything at all from your test suite (except user interaction messages like "Test this?" and your own debugging when your test has "bugs").

    Now, don't get me wrong - what you originally wanted can be done, but do you really want to go there?

    use IO::Scalar; use Test::More qw(no_plan); my $string; tie *STDOUT, 'IO::Scalar', \$string; ok(test_foo() eq 'bar'); ok($string eq 'foo'); $string = ''; ok(test_bar() eq 'baz'); ok($string eq 'bar'); $string = ''; sub test_foo { print 'foo'; return 'bar'; } sub test_bar { print 'bar'; return 'baz'; }
    No thanks. :)

    jeffa

    L-LL-L--L-LL-L--L-LL-L--
    -R--R-RR-R--R-RR-R--R-RR
    B--B--B--B--B--B--B--B--
    H---H---H---H---H---H---
    (the triplet paradiddle with high-hat)
    
      No thanks, just ++jeffa. ;)

      --dda