我向组件添加了一个MatDialog,现在所有单元测试都因
失败错误: StaticInjectorError(DynamicTestModule)[BiqWorkflowEditorComponent-> MatDialog]:StaticInjectorError(平台: 核心)[BiqWorkflowEditorComponent-> MatDialog]: NullInjectorError:MatDialog没有提供程序!
我的组件
constructor(public dialog: MatDialog, private renderer: Renderer2, private logService: LogService)
我的对话框
constructor(
public dialogRef: MatDialogRef<VisualPropertiesModalComponent>,
@Inject(MAT_DIALOG_DATA) public data: Dictionary<string, string>)
{
}
我的测试
import {MatDialogModule} from '@angular/material/dialog';
describe('BiqWorkflowEditor.Component', () =>
{
let component: BiqWorkflowEditorComponent;
let fixture: ComponentFixture<BiqWorkflowEditorComponent>;
let dialog: MatDialog;
beforeEach(async(() =>
{
TestBed.configureTestingModule({
declarations: [
BiqWorkflowEditorComponent,
],
imports: [
MatDialogModule
],
providers: [
MatDialog
]
})
.compileComponents();
}));
beforeEach(() =>
{
fixture = TestBed.createComponent(BiqWorkflowEditorComponent);
component = fixture.componentInstance;
dialog = TestBed.get(MatDialog);
fixture.detectChanges();
});
it('should create', () =>
{
expect(component).toBeTruthy();
});
});
答案 0 :(得分:0)
尝试一下(您需要一个模拟提供程序):
import {MatDialogModule} from '@angular/material/dialog';
describe('BiqWorkflowEditor.Component', () =>
{
let component: BiqWorkflowEditorComponent;
let fixture: ComponentFixture<BiqWorkflowEditorComponent>;
let dialog: MatDialog;
const mockMatDialog = {
closeAll: (): void => undefined
};
beforeEach(async(() =>
{
const mockProviders: Provider[] = [
{ provide: MatDialog, useValue: mockMatDialog }
];
TestBed.configureTestingModule({
declarations: [
BiqWorkflowEditorComponent,
],
imports: [
MatDialogModule
],
providers: mockProviders
})
.compileComponents();
}));
beforeEach(() =>
{
fixture = TestBed.createComponent(BiqWorkflowEditorComponent);
component = fixture.componentInstance;
dialog = TestBed.get(MatDialog);
fixture.detectChanges();
});
it('should create', () =>
{
expect(component).toBeTruthy();
});
});
答案 1 :(得分:0)
实际上,我所讨论的共享代码可以正常工作,问题是在将其固定在一个文件中后,我在另一个测试文件中遇到了相同的错误,但是我没有注意到它在另一个文件中发生。对不起,误报警:(。