2017-01-19 4 views
1

Test::Scriptモジュールを使って、testme.plというPerlスクリプトをテストし、実行されたスクリプトのstdoutを取得します。これまでのところundefになります。ここで Test :: Scriptからstdoutを実行する方法は?

は、私は(テストファイル 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); 

、スクリプトを、私はまた、代わりに@Out \ REFの配列を使用してみました(testme.pl

print "catchme if you can\n"; 

[email protected] artif_get_file $ perl perl_test.pl 
1..2 
ok 1 - Script testme.pl compiles 
ok 2 - run_script 
Out is $VAR1 = undef; 

$ out、まだ運がない。何か案が?ありがとう!

+2

'{stdout => \ $ out}'? – mob

+0

@toolicいいえ、私はより高度なテスト/出力のマッチングを実行したい、と私は完全な標準とより快適に感じる。 –

答えて

5

あなたはほとんどそれを持っています。 give the stdout option a referenceが必要です。それ以外の場合は、undefを渡すだけで、このオプションは無視されます。

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

ワアワウ。それは完全に動作します。私はスカラーのrefを頻繁に使用しないことを認めなければなりません。ありがとう@schwern! –

関連する問題