小编Nar*_*son的帖子

覆盖我正在测试的程序使用的模块

我正在修改一个Perl程序,我想要一个可以运行程序原始版本(调用它launch_rockets.pl)并收集标准输出的测试工具,但不知何故跳过system内部发生的调用launch_rockets.pl.以下代码成功覆盖system内部launch_rockets.pl:

use subs qw(system);
my $SYSTEM_SUCCESS = 0;
sub system {
    print "***\n";
    print "system @_\n";
    print "***\n\n";
    return $SYSTEM_SUCCESS;
}
local @ARGV = @test_args;
do 'launch_rockets.pl';
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.但launch_rockets.pl也包含

use Proc::Background;
Run Code Online (Sandbox Code Playgroud)

然后

Proc::Background->new('perl', 'launch_missiles.pl');
Run Code Online (Sandbox Code Playgroud)

我可以复制launch_rockets.pl到一个Proc::Background被存根替换的沙箱中,但我想知道是否有任何覆盖策略do FILE在文件原始环境中的调用中有效.

testing perl

2
推荐指数
1
解决办法
1721
查看次数

标签 统计

perl ×1

testing ×1