angular - 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 的方法。但正如我所说,我没有运气。
难道我做错了什么?还是我应该事先在某个配置文件中设置一些其他属性?
解决方案
推荐阅读
- go - golang 中 PHP 的 fopen/fread/fwrite 等价物
- javascript - 为什么 md-calendar 指令初始化为错误的日期 AngularJS?
- imacros - 设置提取 Imacros br
- image - 在 React Native 中显示图片
- batch-processing - SQL Server 列存储批处理模式给出不正确的结果
- javascript - Python Django - 模板标签中的 {% request.user.is_authenticated %} 不适用于 JS
- python - 如何使用 tensorflow 将两个不同的 CNN 网络合并为一个网络
- python - PyTorch 中“模块”的确切定义是什么?
- swift - 二元运算符“%”不能应用于“UInt32”和“UInt”类型的操作数
- amp-html - 如何使用响应式布局使 amp-img 居中