3

perlモジュールを使用して、サブルーチンが呼び出すサブルーチンをモックすることにより、サブルーチンをテストする方法を探していますTest::MockModule

sub をテストするとしましょうMy::Module::A()。サブを呼び出しますMy::New::B()。をテストするためにMy::Module::A()、私は をモックしMy::New::B()ます。My::New::B()ただし、別のサブルーチンMy::Calc::C()を呼び出して計算を行います。My::Calc::C()モックされたサブを呼び出すことは必須です。

    my $module = Test::MockModule->new('My::New');
    $module->mock( B => sub($$) 
    {
        my ($first, $second) = @_;

        My::Calc::C();
    } );

My::Calc::C()'main::test'. _ 'My::New::B'_ によってではなくMy::Calc::C()、嘲笑によって呼び出されたことを伝える方法はありますか?My::New::B()main::test()

4

1 に答える 1

1

キーワードは、現在のpackage呼び出しパッケージを設定します。中かっこで囲んで、特定のスコープに制限することができます。

my $module = Test::MockModule->new('My::New');
    $module->mock( B => sub($$) 
    {
        my ($first, $second) = @_;

        {
            package My::New::B;
            My::Calc::C();
        }
    } );
于 2013-09-16T19:42:23.177 に答える