0

具体的には、列挙型を使用したシングルトン モデルを使用しています。列挙型シングルトン ダオを呼び出す列挙型シングルトン サービス (ビジネス ロジック) があります。サービスの単体テストを書きたいのですが、列挙型で最終的なものであるため、列挙型ダオをモックできません。はい、リフレクションでそれを行うという記事を見ましたが、可能であれば避けたいと思います。

だから私の考えはこれだったので、私の列挙型に別の値 TEST_INSTANCE を追加してみませんか? (そして、それが本当に核​​となる質問です。)

    public enum MyDao {
      INSTANCE,
      TEST_INSTANCE;

      public boolean methodIWouldMockIfICould()
      {
        if(this == TEST_INSTANCE) { return true; }
        ... //method code here
      }
    }

これを試してみると、最初はうまくいくようですが、ためらっています。

  1. これは私には悪臭があります。
  2. Web アプリケーションにデプロイされたコードが INSTANCE のみを使用し、TEST_INSTANCE が使用される唯一の場所がテストであると仮定すると、この列挙型は引き続きシングルトン モデルに従いますか?
  3. これについて私が考慮していない他に悪いことはありますか?

事前にどうもありがとう、-マット

編集SpringをDIに使用したいのですが、許可されていません。レガシーシステムと上層部は、単に「いいえ、まだ」と言っています。私はそれが来ることを望んでいますが、まだ許可されていないので、これは当面の私の解決策です.

4

1 に答える 1