【发布时间】:2013-09-16 14:09:00
【问题描述】:
我正在寻找一种方法来通过使用 perl 模块 Test::MockModule 模拟它调用的子例程来测试子例程。
假设我们测试了一个子 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() 调用的?
【问题讨论】: