3
我在測試過程中使用模塊Sub::Override來模擬子例程。我實際上測試了一個名爲sub_a的子例程。 sub_a正在調用另一個子例程sub_b來完成一些工作。 sub_b實際上是通過ssh連接執行一些命令,我想在我的測試模式下進行模擬。所以我使用sub :: override來模擬sub_b。Perl Sub :: Override命名問題
sub_a{
...
sub_b(arg1, arg2)
}
在我的測試代碼,我喜歡這個
my $override_sshCommand = override_sub('package::filename::sub_b', sub ($$) { return "success"; }, undef);
覆蓋它在上面的代碼,如果SUB_B和SUB_A是在同一個班,則覆蓋是成功的。否則,覆蓋不起作用。 我可以用SUB_B的完全合格的名字從SUB_A
sub_a{
...
package::filename::sub_b(arg1, arg2);
}
調用時,上面的代碼修復該問題,並取代是成功的解決這個問題。但我不想這樣做,因爲我沒有這個代碼,而且它看起來很醜。還有其他解決方案嗎?
是sub_b被包含sub_a的包導入,然後像你提到的那樣調用它,解決了問題,謝謝:) – comatose