这个错误通常发生在Angular单元测试中,当尝试测试一个组件时,Mock服务或准备其他测试数据需要在Test Bed中被注入(injectable),但是某些因素导致注入失败,比如缺少必要的imports,或注入的提供者不存在。以下是一些可能解决该错误的方法:
import { MatSnackBarModule } from '@angular/material/snack-bar';
....
imports: [
MatSnackBarModule,
...
]
....
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { MatSnackBar } from '@angular/material/snack-bar';
....
describe('MyComponent', () => {
let component: MyComponent;
let fixture: ComponentFixture;
let snackBar: MatSnackBar;
....
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ MyComponent, ... ],
providers: [ MatSnackBar , ... ],
imports: [ MatSnackBarModule , ... ]
})
.compileComponents();
}));
TestBed.configureTestingModule({
declarations: [ MyComponent, ... ],
providers: [ { provide: MatSnackBar, useValue: {} } , ... ],
imports: [ MatSnackBarModule , ... ]
})
import { MatSnackBarModule } from '@angular/material/snack-bar';
import { MaterialModule } from './material.module'; //在项目中定义自己的material.module
....
TestBed.configureTestingModule({
declarations: [ MyComponent, ... ],
providers: [ { provide: MatSnackBar, useValue: {} } , ... ],
imports