Шпион Жасмин не вызывается, хотя указанный метод выполняется правильно - PullRequest
0 голосов
/ 10 апреля 2019

В настоящее время я использую Jasmine в своем проекте Angular. Но каким-то образом я наткнулся на странное поведение со шпионами. Я уже читал некоторые другие вопросы о подобных проблемах, но я просто не представляю, как я должен решить эту проблему в моем конкретном случае.

Я определяю свой тест так:

describe('DialogComponent', () => {
    let component: DialogComponent;
    let fixture: ComponentFixture<DialogComponent>;

    it('should open dialog and click', () => {
        const button = overlayContainerElement.querySelector('button');
        spyOn(component, 'doSmth').and.callThrough();
        // component.doSmth();          <-- this passes
        button.click();               // <-- this does not pass
        expect(component.doSmth).toHaveBeenCalled();
    });
});

Мой HTML - это просто маленькая форма с кнопкой, которая выполняет метод, например так:

<button mat-flat-button (click)="doSmth()" class="mat-primary" type="button">Submit</button>

Реализация doSmth () на данный момент является просто заполнителем в соответствующем файле машинописного текста, выводящим что-то на консоль.

doSmth() {
    console.log('In doSmth()');
}

По какой-то причине я получаю сообщение "In doSmth ()" при запуске моего теста, но шпион говорит, что метод не был вызван. Я попробовал некоторые другие вещи, такие как выполнение метода не через button.click (), а через component.doSmth (), который работает. У кого-нибудь есть идеи как это решить?

...