我正在寻找一种通过使用 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()
?