我通过以下方式创建了一个全新的组件:
ng g mytest1
然后我将构造函数行更改为此:
constructor(private dialogRef: MatDialogRef<Mytest1Component>) { }
,并添加了所需的导入:
import { MatDialogRef } from '@angular/material';
之后,我通过以下方式运行Karma单元测试项目:
ng test
测试失败。我收到此错误消息:
错误:StaticInjectorError(DynamicTestModule)[Mytest1Component-> MatDialogRef]:StaticInjectorError(平台:core)[Mytest1Component-> MatDialogRef]:NullInjectorError:没有MatDialogRef的提供者!
要解决此问题,我在beforeEach部分中添加了Import语句:
import { MatDialogRef } from '@angular/material';
//...
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ Mytest1Component ],
imports: [MatDialogRef],
})
.compileComponents();
}));
现在我得到了这个新错误,我无法修复:
失败:模块'DynamicTestModule'导入了意外的值'MatDialogRef'。请添加@NgModule批注。
有人可以澄清我应该在哪里添加@NgModule批注,或者我做错了什么吗?
谢谢。
答案 0 :(得分:3)
您正在将MatDialogRef注入组件:
l = column(gridplot([[p1, column(t_slider, p3)]]), p2)
因此,测试床希望将与constructor(private dialogRef: MatDialogRef<Mytest1Component>) { }
相同的东西注入到测试床中。或者,您也可以提供一个provider
。
MockDialogueService
答案 1 :(得分:0)
使用:
imports: [MatDialogModule],
代替
答案 2 :(得分:-1)
我在spec.ts中也遇到过同样的问题,请使用xdescribe而不是describe。这解决了问题。