angular - 测试 UpgradeComponent 抛出 NullInjectorError: No provider for $injector!错误
问题描述
我有一个要升级的 angularjs 组件:
import { Directive, ElementRef, Injector, Output, EventEmitter } from '@angular/core';
import { UpgradeComponent } from '@angular/upgrade/static';
@Directive({
selector: 'up'
})
export class UpDirective extends UpgradeComponent {
constructor(elementRef: ElementRef, injector: Injector) {
super('old', elementRef, injector);
}
}
当我运行应用程序时,这个组件工作得很好。
但是,当我尝试测试使用该指令的 Angular 8 组件时,出现以下错误:
NullInjectorError: StaticInjectorError(DynamicTestModule)[$injector]:
StaticInjectorError(Platform: core)[$injector]:
NullInjectorError: No provider for $injector!
我假设它来自 UpgradeComponent 中使用的注入器。但是我不确定如何将其提供给我的 spec.ts。
Angular 很好地记录了如何在应用程序中进行这项工作,但没有关于如何测试:https ://angular.io/api/upgrade/static/UpgradeComponent
还看了这里:https ://github.com/angular/angular/issues/24369 ,但是仍然不清楚如何测试。
解决方案
这是一个很好的示例,说明如何使用它为组件设置测试。没有 stackblitz 很难更有帮助,但是当我不得不测试类似的东西时,这对我有用。
当我这样做时,我只是将这些东西放在“它”之外,这样它就可以用作设置。很确定我在 beforeEach 中完成了大部分设置。只是在描述中声明了我需要的变量,但在 beforeEach 中初始化了它们,以便可以在测试中使用它们。
如果没有堆栈闪电战,很难更有帮助。
推荐阅读
- deployment - 对象检测 API 网络摄像头部署
- python - 通过多个索引获取记录
- sql - 量化重复中缺少 }。解析正则表达式时出错:'{>>>HERE>>>.*}'
- javascript - 在JS中传递一个字符串作为参数
- typescript - 带有字符串值的 TypeScript 枚举迭代,只获取键,而不是值
- javascript - 本地库导出的 IntelliSense 未显示 - JS / Yarn
- iphone - iPhone 12 mini 硬件规格
- r - 使用扫描功能比较行 - 如何正确执行?
- sql - 计算每个用户的某个值改变了多少次
- python - 用户无法创建新标签