3
我正在尋找一種方法來測試子例程,方法是使用perl模塊Test::MockModule
嘲笑它調用的子例程。Perl模塊Test :: MockModule和調用者
假設我們測試一個子My::Module::A()
。它調用sub 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()
?
這不是我的問題的解決方案。也許你打算寫一個包名稱爲'「My :: New」',因爲'「My :: New :: B」'是一個子例程。無論哪種方式,在你的建議中'My :: Calc :: C()'在一個匿名函數中被調用,並且,正如預期的那樣,My :: Calc :: C()'的調用者沒有被正確地確定。 –