У меня есть компонент angular, который использует токен инъекции для получения данных из Angular -материала.
export class DialogComponent implements OnInit
{
public userEmail: string;
constructor(private dialogService: DialogService, @Inject(MAT_DIALOG_DATA) data)
{
this.userEmail = data.data.userEmail;
}
...
}
Я пытаюсь запустить модульные тесты для этого компонента, но у меня возникли различные ошибки. Я уже посмотрел эти сообщения ...
Angular Материал и Жасмин: "Нет поставщика для InjectionToken MdDialogData!"
Angular Тестирование - Mocking An InjectionToken
Angular проблемы с инжекцией компонентов
... но ни один не предоставил работающего решения, которое я ищу, чтобы устранить ошибку I вижу для моего самого базового c модульного теста. Я получал то же сообщение об ошибке, что и в первом сообщении, но решение в рамках этой ошибки исправило эту ошибку, предоставив мне текущую ошибку Тест и связанные с ним провайдеры и блок beforeEach ...
providers: [
DialogService,
{ provide: MAT_DIALOG_DATA, useValue: {} },
{ provide: MatDialogRef, useValue: {} }
]
...
beforeEach(() =>
{
fixture = TestBed.createComponent(DialogComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
...
it('should create', () =>
{
expect(component).toBeTruthy();
});
... И затем я вижу ошибку ...
TypeError: Cannot read property 'userEmail' of undefined
Я не понимаю здесь, и если кто-нибудь знает, что, я был бы признателен, если бы вы могли объяснить мне, что происходит.
РЕДАКТИРОВАТЬ: я забыл добавить в исходное сообщение, что после отладки кода тестирования, переменная "component" также не определена.
Angular: v7.3.8 Angular -Материал: v6.4.7