我正在尝试模拟Net :: OpenSSH pipe_out子例程。我的代码如下
use strict;
use warnings;
use Test::More;
use Test::Exception;
use Test::MockModule;
我的Begin方法是
use_ok('Net::OpenSSH');
我正在按如下方法模拟新方法。
$mockOpenSSH = Test::MockModule->new('Net::OpenSSH');
$mockOpenSSH->mock(
new => sub {
my $ObjectName = shift;
my $hostIp = shift;
is $hostIp, "<My IP>";
print "Fake OpenSSH::new\n";
return bless( {}, 'Net::OpenSSH' );
},
);
但是当我尝试像这样模拟pipe_out
$mockOpenSSH->mock( 'pipe_out' => sub {return 1} );
我从主perl模块中收到错误,我在其中将pipe_out称为
$ssh->pipe_out('ls');
出现错误
#测试失败'' #在test_abc_config.t第148行。 #死亡:无法通过abc.pm第166行的包“ Test :: MockModule”找到对象方法“ pipe_out”。
有人可以帮我吗?