一部の CGI スタイルの perl スクリプトをリモートでテストできるようにしている間 (CGI テスト モジュールをループせずに)、最終的に次のようなことを行いました。
ビン/myscript.pl:
use …;
do {
return 1 if $ENV{INCLUDED_AS_MODULE};
… original script without the subs …
};
sub some_sub {
…
}
sub …
sub …
t/mytest.t:
use Test::More;
use FindBin qw/$Bin/;
BEGIN {
$ENV{INCLUDED_AS_MODULE} = 1;
my $filename = "$Bin/../bin/myscript.pl";
do $filename or die "Unable to open '$filename': $! ($@)";
}
ok some_sub(), 'some sub returns true';
…
done_testing;
これにより、サブがテストのメイン名前空間にインポートされ、簡単にテストできます。
編集:そして、私が探していたものをさらに検索した後、modulinos
基本的に私が行ったことに気付きましたが、ENV を介した通信を避け、すべてのコードをメソッドに入れ、caller() があるかどうかを確認するだけです:
https://www.perlmonks.org/bare/?node_id=537377 (以前の回答のリンクは機能していないようでした)