#angular #jasmine #karma-jasmine
Вопрос:
У меня есть метод в одном из файлов ts, в котором он скроет модальный загрузчик. Этот метод имеет параметр, который фактически является модальным экземпляром, и с помощью метода jQuery hide() я скрываю модальное всплывающее окно.
modalClose(modal: ModalCompoment) {
this.open = false;
modal.modalInstance.getModalInstance().hide();
}
код modal.component.ts
export class ModalDialogComponent implements Oninit {
@input() modalId = 'modal-dialog';
@Input() title = '';
@ContentChild('modalHead', {static: false}) headerTemplate: TemplateRef<any>;; false
@ViewChild('modalInstance', {static}) modalInstance: ElementRef;
constructor() {}
ngOnInit() {}
getModalInsatnce : any{
const modal = Object.
getOwnPropertyNames(this.modalInsatnce. nativeElement).
filter(n
=> n.startsWith('jquery')). map(n=> this.modalInsatnce.
nativeElement[n]['bs.modal']). find(j=> j!== undefined);
return modal;
}
}
}
Код файла спецификации
it('test modal' () => {
let modalComp : ModalComponent;
let fixture: ComponentFixture<ModalComponent>;
fixture = TestBed.createComponent(modalComp);
modalComp = fixture. componentInsatnce;
component.modalClose(modalComp);
expect(component.open).toEqual(false);
// need to cover hide() code line
});
С помощью этого кода я получаю ошибку: Не удается прочитать свойство nativeElement неопределенного. Мне нужно описать модульный тест для строки modal.modalInstance.getModalInstance().скрыть();. Попросите кого — нибудь помочь в этом вопросе.
Комментарии:
1. Пожалуйста, поделитесь тестом, который вы написали до сих пор, чтобы мы могли предложить улучшения в нем.
2. Я не смог передать модальный экземпляр как событие в файле спецификации.
3. Я хотел бы увидеть объект события, который вы передали в своем тесте при вызове метода modalClose
4. Вы собираетесь только проверить / утверждать, что был вызван метод hide() modalInstance ?
5. ДА. Как передать getModalInsatnce и спрятаться здесь.