语境
我创建了一个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
]
});
}));
它工作正常。
然后我添加我的第二个规范文件,即 for 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
则测试将成功。
为什么我有这个错误?我的两个文件之间的上下文似乎存在冲突,我不知道为什么以及如何解决这个问题。