Facade(Singleton)を使用して作成された静的メンバーを持つJavaクラスがあります。
クラス A は InterfaceA を実装します { private static DataStore db = DataStoreFacade.getInstance("BDB"); // シングルトン インスタンス public void save(最終文字列キー、最終文字列値) { デシベル保存 (キー、値); } };
ここで、クラス A は Web サービス (ステートレス Bean) のメンバー変数として使用されます。
DataStore インスタンスをオーバーライドする方法がないため、EasyMock を使用してこのコードをテストすることはできません。
2 つのオプションがあります。
コンストラクターに、db メンバー変数に設定される DataStore のインスタンスを取得させます。問題は、どのデータストア インスタンスが作成されたかを webservice クラスに認識させたくないことです。
追加の保護された Set メソッドを提供して、db オブジェクトをオーバーライドします。これは、DataStore の Easy Mock オブジェクトを作成し、メンバー変数をオーバーライドする場所で使用したものです。正しい設計か。
他の可能性は何ですか?