序文: 私のデフォルトの操作モードは、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()
、モックされた依存関係を返すようにします。
このアプローチに関する私の主な問題は、テストをサポートするためだけに存在するロケーター セッターです。より良い方法はありますか?