无法在perl中模拟Net :: OpenSSH pipe_out模块

时间:2018-09-11 04:09:07

标签: perl unit-testing mocking

我正在尝试模拟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”。

有人可以帮我吗?

0 个答案:

没有答案