Perl测试假哈希引用返回

时间:2013-05-20 22:10:51

标签: perl unit-testing

我有一个返回哈希引用的函数。特定功能是与具有高延迟应答的资源通信并且多次运行。根据调用的次数 - 运行或测试程序需要几分钟。

我想做的是测试Mock返回函数,否则正常运行程序。

我是Perl测试或任何代码测试的新手,所以非常了解如何实现这一目标。

功能可能是真的。

sub my_func {
    my $data;
    .... get_data_from_high_latency_resource...

    return $data;
 }

$ data在这种情况下是一个哈希引用,但我想我是在问这个关于标量或数组的问题,它不会产生任何影响。

1 个答案:

答案 0 :(得分:2)

今天早上我的工作问题非常类似;我的代码中有一个需要修复的错误,但代码对单元测试有抵抗力,因为它是硬编码的,以便在操作过程中发出POST请求。我使用Sub::Override模块来删除“make_http_request”函数,并让我的存根返回参数的Data :: Dumper'd版本。在我的测试和错误暴露的输出。

该模块的文档很简单,但它几乎是这样的:

my $object_under_test = My::Object->new(); # This has a method called run_me

my $override = Sub::Override->new( My::Object::run_me => sub { return 'I have run' } );

my $result = $object_under_test->run_me();
# $result now contains "I have run"