0

我有一个返回哈希引用的函数。特定功能正在与具有高延迟回复并多次运行的资源交谈。取决于它被调用的次数 - 运行或测试程序需要几分钟。

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

我对 Perl 测试或任何代码测试的想法很陌生,非常感谢有关如何实现这一点的指导。

功能可以是任何东西。

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

    return $data;
 }

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

4

1 回答 1

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"
于 2013-05-20T22:17:23.103 回答