Вот конструктор компонента:
constructor(
public dialogRef: MatDialogRef<TaskActionModalContainer>,
@Inject(MAT_DIALOG_DATA) data
) {}
Вот тестовый стенд:
TestBed.configureTestingModule({
imports: [ MatDialogModule ],
declarations: [ TaskActionModalContainer ],
schemas: [
CUSTOM_ELEMENTS_SCHEMA
],
providers: [
{
provide: MatDialogRef,
useValue: {},
},
{
provide: MAT_DIALOG_DATA,
useValue: {}
}
]
})
.compileComponents();
Вот ошибка:
StaticInjectorError(DynamicTestModule)[TaskActionModalContainer -> MatDialogRef]:
StaticInjectorError(Platform: core)[TaskActionModalContainer -> MatDialogRef]:
NullInjectorError: No provider for MatDialogRef!
Я искал все выше и нижеи вижу эту ошибку NullInjector везде, но я продолжаю ее получать.Я думал, что угловой гуру может решить эту проблему быстро.
Помощь!
РЕДАКТИРОВАТЬ:
Я также использовал useClass
безуспешно.
Интересно, что у меня также есть это:
beforeEach(inject(
[
MatDialogRef,
MAT_DIALOG_DATA
],
(
dialogRef,
dialogData
) => {
console.log(dialogRef);
console.log(dialogData);
}));
, и я вижу эти console.log при запуске теста .... прямо перед тем, как он показывает мне ошибку в TestBed.createComponent
РЕДАКТИРОВАТЬ # 2 - я чувствую, что это потому, что это элемент entry, который я понятия не имею, что это значит, но это один.У меня есть ModalContainer, который выскакивает этот (так что я думаю, что это динамически созданный) - любая помощь там?
Ошибочно закрыл это как дурак, мой был о модульном тестировании, поэтому ответ немного более нюансирован.