具体的には、列挙型を使用したシングルトン モデルを使用しています。列挙型シングルトン ダオを呼び出す列挙型シングルトン サービス (ビジネス ロジック) があります。サービスの単体テストを書きたいのですが、列挙型で最終的なものであるため、列挙型ダオをモックできません。はい、リフレクションでそれを行うという記事を見ましたが、可能であれば避けたいと思います。
だから私の考えはこれだったので、私の列挙型に別の値 TEST_INSTANCE を追加してみませんか? (そして、それが本当に核となる質問です。)
public enum MyDao {
INSTANCE,
TEST_INSTANCE;
public boolean methodIWouldMockIfICould()
{
if(this == TEST_INSTANCE) { return true; }
... //method code here
}
}
これを試してみると、最初はうまくいくようですが、ためらっています。
- これは私には悪臭があります。
- Web アプリケーションにデプロイされたコードが INSTANCE のみを使用し、TEST_INSTANCE が使用される唯一の場所がテストであると仮定すると、この列挙型は引き続きシングルトン モデルに従いますか?
- これについて私が考慮していない他に悪いことはありますか?
事前にどうもありがとう、-マット
編集SpringをDIに使用したいのですが、許可されていません。レガシーシステムと上層部は、単に「いいえ、まだ」と言っています。私はそれが来ることを望んでいますが、まだ許可されていないので、これは当面の私の解決策です.