我知道Stackoverflow上也有一些类似的问题,但是它们并不能完全回答我的问题。
在Angular项目中运行Karma测试时,出现以下错误:
NullInjectorError: No provider for InjectionToken app.config!
我知道我需要在.spec文件中为InjectionToken指定一个提供程序,但是我不确定确切的语法。
这是我的app.config
文件:
export let APP_CONFIG = new InjectionToken("app.config");
export const AppConfig: IAppConfig = {
relativeDateLimit: 604800000,
dateFormat: 'MM-DD-YYYY',
...
}
export const AppConfig: IAppConfig = {
relativeDateLimit: 604800000,
dateFormat: 'MM-DD-YYYY',
...
}
然后在.component.ts文件中,就像在构造函数中那样使用它:
import { APP_CONFIG } from '../../app.config';
constructor(@Inject(APP_CONFIG) public appConfig) {}
现在在此组件的.spec.ts文件中,我知道我需要为InjectionToken
我尝试这样做:
import { InjectionToken } from "@angular/core";
...
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ RelativeDateComponent ],
providers: [ InjectionToken ]
})
.compileComponents();
}));
但是这种语法不起作用,因为我还需要以某种方式指定app.congig。任何帮助表示赞赏。谢谢
答案 0 :(得分:1)
在* .spec.ts文件中,需要将以下内容添加到provider数组:
providers: [
{ provide: APP_CONFIG, useValue: AppConfig }
]