我正在寻找一种通过使用 perl 模块模拟它调用的子例程来测试子例程的方法Test::MockModule。
假设我们测试一个 sub My::Module::A()。它调用 sub My::New::B()。为了测试My::Module::A(),我嘲笑My::New::B()。My::New::B()但是,调用另一个 subMy::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()?