- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试在一个包含子组件的组件中进行一些测试:
这是父组件模板:
<header></header>
<snackbar></snackbar>
当我尝试测试父组件时,这个“snackbar”组件给我带来了问题:“snackbar”组件与 injectionToken
有依赖关系,用于传递给组件组件需要的 appConfig
(一些常量)。 appConfig
像这样注入(inject)到“snackbar”组件中:
import { APP_CONFIG, AppConfig } from '../../../../app.config';
export class SnackbarComponent implements OnInit {
private config: MdSnackBarConfig;
constructor(
@Inject(APP_CONFIG) config: AppConfig
) {
let snackBarConfig = new MdSnackBarConfig();
this.config = snackBarConfig;
}
}
父组件测试良好,但当尝试解决“snackbar”组件依赖时它失败了,因为它无法找到 injectionToken
依赖的提供者。
我想解决这个问题的正确方法是模拟“snackbar”组件,遗憾的是我还没有找到任何可行的方法。
最佳答案
我猜你的 app.config 看起来像 Angular tutorial: 中描述的这样
import { InjectionToken } from '@angular/core';
export interface IAppConfig {
smartTable: {
widthColumnNumber: string;
widthColumnPercentage: string;
};
}
export const APP_DI_CONFIG: IAppConfig = {
smartTable: {
widthColumnNumber: '5rem',
widthColumnPercentage: '10rem',
},
};
export let APP_CONFIG = new InjectionToken<IAppConfig>('app.config');
为了为此添加一个提供者,您应该像这样在 NgModule 中添加一个提供者:
import { APP_CONFIG, APP_DI_CONFIG } from '../../app.config';
...
...
{ provide: APP_CONFIG, useValue: APP_DI_CONFIG },
在你的单元测试中你可以这样做来模拟配置:
import { APP_CONFIG } from '../../app.config';
...
let mockConfig = {};
...
{ provide: APP_CONFIG, useValue: mockConfig },
关于angular 2 - 具有 injectionToken 依赖性的模拟组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44880169/
我目前正在学习新的 Angular 框架,我正在尝试制作一个动态搜索栏,它接受一个服务名称作为参数,以便它动态解析一个服务来查询后端服务。 为此,我使用了一个 Injector,并在 ngOnInit
我正在尝试在延迟加载模块中提供 APP_BASE_HREF 注入(inject) token ,然而,工厂方法根本没有被调用。 在这里https://github.com/MaurizioCascia
我不是 Angular 的新手,通常我知道如何处理“No provider for XYZ”错误,但在这种情况下,我不知道 Angular 对“本地化键前缀”意味着什么 我的组件是 kendo-pag
我正在尝试测试处理 SignalR 连接的 Angular 服务,它将 SignalR 的代码作为 InjectionToken。 这是提供程序文件: // signalr-provider.ts i
我正在开发 Angular 应用程序,当我打开我的项目时,它给了我如下错误 ERROR NullInjectorError: R3InjectorError(IndexModule)[Injectio
在我的 Angular 应用程序上运行 jasmine 测试时出现此错误。 Error: StaticInjectorError(DynamicTestModule)[MyEditDialogComp
尝试使用 InjectionToken 注入(inject)对象。 在AppModule中我有: export const tokenConfigKey = new InjectionToke
我正在编写一个 Angular 库,我需要在其中在模块导入的 .forRoot() 中传入一个配置对象。 我正在尝试使用 InjectionToken 执行此操作(显然是正确的方法),但出现 AoT
我是 Angular 4 Jasmine 单元测试的新手。 请帮助我获得附加组件的完整测试范围。 我已经为翻译模块添加了子依赖项,但我仍然收到错误:没有 InjectionToken USE_DEFA
我正在尝试按照 this 制作具有 ngx-translate 功能的 Angular 应用程序教程。 我执行了所有步骤,但出现错误:“异常:调用节点模块失败,出现错误:错误:没有 Injection
我正在尝试在一个包含子组件的组件中进行一些测试: 这是父组件模板: 当我尝试测试父组件时,这个“snackbar”组件给我带来了问题:“snackbar”组件与 injectionToken 有依
为什么我会得到 Error: StaticInjectorError(AppServerModule)[NgModuleFactoryLoader -> InjectionToken MODULE_M
我正在尝试将表单数据插入云 Firestore 数据库中。下面是我的 x.component.ts 文件,我在其中编写的构造函数中遇到错误 private firestore: AngularFire
我有这样的用于 Azure AD 身份验证的配置包装器 import { APP_INITIALIZER, InjectionToken, NgModule } from '@angular/core
我正在使用 Angular Materials 开发 Angular 项目。项目已使用 Angular Materials 正确设置,编译时没有任何问题,并且我能够使用多个 Angular Mater
当我启动我的 Angular 2 应用程序时,该应用程序始终处于加载阶段。 在 chrome 开发控制台中,我可以看到以下内容: Error: (SystemJS) core_1.Injection
这个问题在这里已经有了答案: NullInjectorError: No provider for InjectionToken angularfire2.app.options (4 个答案) 关
我知道 Stackoverflow 上有一些类似的问题,但它们并没有完全回答我的问题。 在我的 Angular 项目中运行 Karma 测试时,出现以下错误:NullInjectorError: No
我正在学习如何实现 Dependency Injection 的各种方法关于 Angular 5。众所周知,Angular 5 有 3 种不同的方法,用于在声明依赖项时声明提供者的 key / tok
我正在使用 VS 2017 和 Angular 2 + asp.netcore 模板开发一个项目。默认项目运行良好,但是当我在 app.module.ts 中导入 ReactiveFormsModul
我是一名优秀的程序员,十分优秀!