Perl模拟:有没有一种方法可以模拟$?

5
我正在使用 Test::MockModule 来测试Perl模块。其中一个调用需要检查$?的状态以获取错误代码,并且程序会对其进行检查。
我该如何模拟$?的结果?
被测试的代码如下。
my $result = CCUtil::cleartool($cmd);

if ( $? != 0 ) {
    confess  "Stream $stream not found( $result) ";
}

该API返回字符串并设置$?以检查状态。

可以使用以下方式更改正常方法调用及其返回值:

my $module = Test::MockModule->new('CCUtil');
$mockModule->mock(cleartool => sub {return 'stream not found'});

方法调用现在被模拟了,而不是 -- $? 的值。
1个回答

4
my $module = Test::MockModule->new('CCUtil');
$mockModule->mock(cleartool => sub { $? = 0x0100; return 'stream not found' });

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接