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 オブジェクトを作成し、メンバー変数をオーバーライドする場所で使用したものです。正しい設計か。
他の可能性は何ですか?