Ошибка тестирования модуля Карма: Неожиданное значение, импортированное модулем. Пожалуйста, добавьте аннотацию @NgModule
Я создал новый новый компонент через:
ng g mytest1
Затем я изменил строку конструктора так:
constructor(private dialogRef: MatDialogRef<Mytest1Component>) { }
и добавил необходимый импорт:
import { MatDialogRef } from '@angular/material';
После этого я запустил тестовый проект Karma через:
ng test
Тест не пройден. Я получил это сообщение об ошибке:
Ошибка: StaticInjectorError(DynamicTestModule)[Mytest1Component -> MatDialogRef]: StaticInjectorError(Платформа: ядро)[Mytest1Component -> MatDialogRef]: NullInjectorError: Нет поставщика для MatDialogRef!
Чтобы исправить это, я добавил оператор Import в разделе beforeEach:
import { MatDialogRef } from '@angular/material';
//...
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ Mytest1Component ],
imports: [MatDialogRef],
})
.compileComponents();
}));
Теперь я получил эту новую ошибку, которую я не могу исправить:
Ошибка: неожиданное значение 'MatDialogRef', импортированное модулем 'DynamicTestModule'. Пожалуйста, добавьте аннотацию @NgModule.
Может кто-нибудь уточнить, где я должен добавлять аннотацию @NgModule, или я сделал что-то не так?
Спасибо.
2 ответа
Вы вводите MatDialogRef в компоненте:
constructor(private dialogRef: MatDialogRef<Mytest1Component>) { }
Таким образом, testBed ожидает ввода того же provider
в TestBed. Или вы также можете предоставить MockDialogueService
к этому.
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ Mytest1Component ],
providers: [ MatDialogRef ],
})
.compileComponents();
}));
Я столкнулся с той же проблемой, в спецификациях укажите xdescribe вместо описания. Это решило проблему.