Learning Perl Objects, References amp;amp; Modules [Electronic resources] نسخه متنی

اینجــــا یک کتابخانه دیجیتالی است

با بیش از 100000 منبع الکترونیکی رایگان به زبان فارسی ، عربی و انگلیسی

Learning Perl Objects, References amp;amp; Modules [Electronic resources] - نسخه متنی

Randal L. Schwartz

| نمايش فراداده ، افزودن یک نقد و بررسی
افزودن به کتابخانه شخصی
ارسال به دوستان
جستجو در متن کتاب
بیشتر
تنظیمات قلم

فونت

اندازه قلم

+ - پیش فرض

حالت نمایش

روز نیمروز شب
جستجو در لغت نامه
بیشتر
لیست موضوعات
توضیحات
افزودن یادداشت جدید














14.6 Testing Things That Write to STDOUT and STDERR



One advantage to using
the ok( ) functions (and friends) is that they
don't write to STDOUT directly,
but to a filehandle secretly duplicated from
STDOUT when your test script begins. If you
don't change STDOUT in your
program, of course, this is a moot point. But let's
say you wanted to write test a routine that writes something to
STDOUT, such as making sure a horse eats properly:

use Test::More 'no_plan';
use_ok 'Horse';
isa_ok(my $trigger = Horse->named('Trigger'), 'Horse');
open STDOUT, ">test.out" or die;
$trigger->eat("hay");
close STDOUT;
open T, "test.out" or die;
my @contents = <T>;
close T;
is(join(", @contents), "Trigger eats hay.\n", "Trigger ate properly");
END { unlink "test.out" } # clean up after the horses

Note that just before you start
testing the eat method, you (re-)open
STDOUT to your temporary output file. The output
from this method ends up in the test.out file.
Bring the contents of that file in and give it to the is(
)
function. Even though you've closed
STDOUT, the is( ) function can
still access the original STDOUT, and thus the
test harness sees the proper ok or not
ok
messages.

If you create temporary files like this,
please note that your current directory is the same as the test
script (even if you're running make
test
from the parent directory). Also pick fairly safe
cross-platform names if you want people to be able to use and test
your module portably.



/ 199