相关疑难解决方法(0)

测试 - 无法解析(ClassName)的所有参数

上下文

我创建了一个ApiService类来处理我们的自定义API查询,同时使用我们自己的序列化程序+其他功能.

ApiService的构造函数签名是:

constructor(metaManager: MetaManager, connector: ApiConnectorService, eventDispatcher: EventDispatcher);
Run Code Online (Sandbox Code Playgroud)
  • MetaManager 是一种处理api的metadatas的可注射服务.
  • ApiConnectorService是一个包装的服务,Http用于添加我们的自定义标题和签名系统.
  • EventDispatcher 基本上是Symfony的事件调度系统,在打字稿中.

问题

当我测试时ApiService,我做了一个初始化beforeEach:

beforeEach(async(() => {
    TestBed.configureTestingModule({
        imports  : [
            HttpModule
        ],
        providers: [
            ApiConnectorService,
            ApiService,
            MetaManager,
            EventDispatcher,
            OFF_LOGGER_PROVIDERS
        ]
    });
}));
Run Code Online (Sandbox Code Playgroud)

它工作正常.

然后,添加我的第二个规范文件,该文件是ApiConnectorService,与此beforeEach:

beforeEach(async(() => {
    TestBed.configureTestingModule({
        imports  : [HttpModule],
        providers: [
            ApiConnectorService,
            OFF_LOGGER_PROVIDERS,
            AuthenticationManager,
            EventDispatcher
        ]
    });
}));
Run Code Online (Sandbox Code Playgroud)

并且所有测试都因此错误而失败:

错误:无法解析ApiService的所有参数:(MetaManager,?,EventDispatcher).

  • 如果我从加载的测试中删除api-connector-service.spec.ts(ApiConnectorService的spec文件),ApiService测试将成功.
  • 如果我从加载的测试中删除api-service.spec.ts(ApiService …

karma-jasmine angular2-services angular2-injection angular2-testing angular

17
推荐指数
3
解决办法
2万
查看次数