spyOn не вызывается, даже если он прошел через функцию - PullRequest
0 голосов
/ 03 февраля 2020

Я создал тест для моего ngOnChanges, но, несмотря на то, что он прошел через функцию, есть ошибка

Error: Expected spy selectItem to have been called.

Вот мой ngOnChange

ngOnChanges(changes: SimpleChanges): void {
        const eventDataChange: SimpleChange = changes['selectEventData'];

        if (eventDataChange) {
            this.selectItem(eventDataChange.currentValue);
        }
    }

Вот модульный тест:

describe('ngOnChange()', () => {
        it('this is a description', () => {
            const selectDto = 'test';
            const eventDataChange: SimpleChange = new SimpleChange(null, selectDto, false);
            const simpleChanges: SimpleChanges = {
                selectEventData: eventDataChange
            };

            component.ngOnChanges(simpleChanges);

            const selectSpy = spyOn(component, 'selectItem');

            expect(selectSpy).toHaveBeenCalled();
        });
    });

Надеемся на добрый ответ!

Спасибо!

1 Ответ

1 голос
/ 03 февраля 2020

spyOn шпионские звонки, которые поступают только после регистрации шпиона. В вашем примере spyOn() выполняется после вызова ngOnChanges(), это проблема. Просто переместите spyOn() вызов до ngOnChanges() вызова:

const selectSpy = spyOn(component, 'selectItem');
component.ngOnChanges(simpleChanges);
expect(selectSpy).toHaveBeenCalled();
...