首页 > 解决方案 > Karma - 注入 Angular InjectionToken 问题

问题描述

我正在尝试测试一个注入我创建的 InjectionToken 的组件。对于测试,我使用默认的 @angular/cli 配置作为 Karma。

但我无法解决这个错误:

NullInjectorError: No provider for InjectionToken path.configuration!

像这样使用 TestBed.configureTestingModule 时,我尝试在提供程序中提供我的令牌:

TestBed.configureTestingModule({
  imports: [RouterTestingModule],
  providers: [
    {
      provide: PATH_CONFIGURATION, useValue: { LOGIN: '/login' }
    }
  ],
  declarations: [HeaderComponent],

}).compileComponents();

我的 InjectionToken 定义是这样的:

import { InjectionToken } from '@angular/core';
export interface PathConfiguration {
    LOGIN: string;
}
export const pathConfiguration: PathConfiguration = {
    LOGIN: '/login'
}
export const PATH_CONFIGURATION = new InjectionToken<PathConfiguration>('path.configuration');

这就是我将它注入组件的方式:

constructor(
    @Inject(PATH_CONFIGURATION) private pathConfig: PathConfiguration
) { }

我已经阅读了一些关于 stackoverflow 的帖子,这是在测试环境中提供 injectionToken 的方法。但正如我所说,我没有运气。

难道我做错了什么?还是我应该事先在某个配置文件中设置一些其他属性?

标签: angularunit-testingdependency-injectionkarma-jasmine

解决方案


推荐阅读