2

序文: 私のデフォルトの操作モードは、IoC コンテナとコンストラクタ インジェクションを使用することです。これにより、モックされた依存関係を使用したテストが簡単になります。

IntelliJ プラグインの開発を開始しており、制御の反転を利用したいと考えています。これはプラグインであるため、実際にはコンテナーのオプションはありません (そうですか?) ので、Service Locator パターンを使用する必要があると思います。

Service Locator パターンでモックを使用してテストするにはどうすればよいですか?

私が考えることができる最善の方法は、ロケーターのインターフェイスを使用し、静的ゲッターを使用して各サービスのデフォルト コンストラクターに設定し、モック ロケーターを設定できるようにセッターを用意することです。次のようになります。

public class MyService {
    private IServiceLocator locator;

    public MyService() {
        setLocator(ServiceLocator.locator());
    }

    public void setLocator(IServiceLocator locator) {
        this.locator = locator;
    }
}

これで、をモックして、テストでIServiceLocatorそれを設定できます。MyService次に、ような呼び出しを期待してlocator.dependency1()、モックされた依存関係を返すようにします。

このアプローチに関する私の主な問題は、テストをサポートするためだけに存在するロケーター セッターです。より良い方法はありますか?

4

2 に答える 2