【发布时间】:2019-07-15 23:12:36
【问题描述】:
我正在尝试在 perl 中编写一个单元测试用例,我需要模拟通过反引号运行的命令输出及其返回码两次。
考虑如下代码流
sub foo {
my $out = `ls -R`;
my $ret = $?;
if( $ret == 0 ) {
$out = `ls -R > foo.txt`;
} elsif {
# some retry logic
# i want to cover this code path
}
return ($ret, $out);
}
现在我需要模拟非零返回码。 我怎样才能做到这一点?
我有类似下面的东西,但这只是模拟输出,但返回码总是 0
BEGIN {
*CORE::GLOBAL::readpipe = sub($) {
my $var = $_[0];
return 1;
}
};
我正在使用 Perl 5.10。而且我无法使用反引号更改执行命令。
【问题讨论】:
-
我假设你已经阅读了stackoverflow.com/q/3678655/1331451?
-
@simbabque 是的,我有。它只处理输出而不是返回码
标签: unit-testing perl mocking