如何从Test :: Script运行stdout?

时间:2017-01-19 17:36:41

标签: perl testing

我想用Test::Script模块测试Perl脚本,比如testme.pl,并获取已执行脚本的标准输出。到目前为止,我得到undef

这是我尝试过的(测试文件test.t):

use Test::More tests => 2;
use Test::Script;       
use Data::Dumper;
script_compiles('testme.pl');
my $out;
script_runs(['testme.pl'], {"stdout"=>$out}, 'run_script');
print "Out is " . Dumper($out);

要测试的脚本(testme.pl

print "catchme if you can\n";

boris@midkemia artif_get_file $ perl perl_test.pl 
1..2
ok 1 - Script testme.pl compiles
ok 2 - run_script
Out is $VAR1 = undef;

我也尝试使用数组ref \ @out而不是$ out,但仍然没有运气。任何的想法?谢谢!

1 个答案:

答案 0 :(得分:5)

你几乎得到了它。你需要give the stdout option a reference。否则,您只是传递undef,它将忽略该选项。

script_runs(['testme.pl'], {"stdout"=>\$out}, 'run_script');