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 されたバージョンのパラメーターを返すようにしました。私のテストでそれを出力し、バグが公開されました。

モジュールのドキュメントは簡単ですが、次のようになります。

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 に答える