環境
ApiService
独自のシリアライザーとその他の機能を使用しながら、カスタム API クエリを処理できるクラスを作成しました。
ApiService
のコンストラクターの署名は次のとおりです。
constructor(metaManager: MetaManager, connector: ApiConnectorService, eventDispatcher: EventDispatcher);
MetaManager
API のメタデータを処理する注入可能なサービスです。ApiConnectorService
Http
カスタムヘッダーと署名システムを追加するためのラッピングサービスです。EventDispatcher
は基本的に Symfony のイベント ディスパッチャー システムであり、typescript で記述されています。
問題
をテストするときApiService
は、 で初期化を行いますbeforeEach
。
beforeEach(async(() => {
TestBed.configureTestingModule({
imports : [
HttpModule
],
providers: [
ApiConnectorService,
ApiService,
MetaManager,
EventDispatcher,
OFF_LOGGER_PROVIDERS
]
});
}));
そしてそれはうまくいきます。
次に、 用の 2 番目のスペック ファイルを次のように追加ApiConnectorService
しbeforeEach
ます。
beforeEach(async(() => {
TestBed.configureTestingModule({
imports : [HttpModule],
providers: [
ApiConnectorService,
OFF_LOGGER_PROVIDERS,
AuthenticationManager,
EventDispatcher
]
});
}));
そして、すべてのテストが次のエラーで失敗します。
エラー: ApiService のすべてのパラメーターを解決できません: (MetaManager、?、EventDispatcher)。
api-connector-service.spec.ts
ロードしたテストから(ApiConnectorService
の仕様ファイル)を削除すると、ApiService
のテストは成功します。api-service.spec.ts
ロードしたテストから(ApiService
の仕様ファイル)を削除すると、ApiConnectorService
のテストは成功します。
なぜこのエラーが発生するのですか? 私の 2 つのファイル間のコンテキストが競合しているように見えますが、これを修正する理由と方法がわかりません。