モジュールSub::Overrideを使用して、テスト中にサブルーチンをモックしています。実際に sub_a という名前のサブルーチンをテストしています。sub_a は、何らかの作業を行うために別のサブルーチン sub_b を呼び出しています。sub_b は、テスト モードでモックしたい ssh 接続を介して実際にいくつかのコマンドを実行しています。したがって、sub::override を使用して sub_b をモックしています。
sub_a{
...
sub_b(arg1, arg2)
}
私のテストコードでは、このようにオーバーライドしています
my $override_sshCommand = override_sub( 'package::filename::sub_b', sub ($$) { return "success"; }, undef );
上記のコードで、sub_b と sub_a が同じクラスにある場合、オーバーライドは成功します。そうしないと、オーバーライドは機能しません。sub_a から呼び出すときに sub_b の完全修飾名を使用することで、この問題を解決できます。
sub_a{
...
package::filename::sub_b(arg1, arg2);
}
上記のコードで問題が修正され、オーバーライドが成功しました。しかし、私はそのコードを所有しておらず、見た目も悪いので、このようにしたくありません。他の解決策はありますか?