Обеспечение запуска функции без фактического запуска функции углового тестирования - PullRequest
0 голосов
/ 17 декабря 2018

В настоящее время я пытаюсь написать угловые тесты, используя Jasmine

Одна вещь, которую я хочу протестировать, - убедиться, что плитка углового материала работает правильно при щелчке плитки материала.

Для этого я слежу за вызываемым методом, получаю элемент, вызывающий функцию, запускаю событие и утверждаю, нажали ли на шпиона

spyOn(router, 'router.href="/"');
let element = fixture.debugElement.query(By.css('.matTile1select'));
element.triggerEventHandler('click', null);
fixture.detectChanges();
expect(..);

Однако, когда я запускаюобработчик событий, мои тесты фактически приведут к выполнению функции, что приведет к сбою

Я не хочу на самом деле проверять вызываемую функцию сама по себе, просто она действительно вызывается, и поэтому яинтересно, есть ли способ получить выполнение функции без фактического запуска самой функции?

1 Ответ

0 голосов
/ 18 декабря 2018

Да, если под «функцией» вы подразумеваете функцию в вашем компоненте, которая вызывается при нажатии.В этом случае просто следите за соответствующей функцией компонента.Это заглушит его (предотвратит его выполнение), но вы можете проверить, был ли вызван метод и даже то, с чем он был вызван.

Примерно так:

handleSpy = spyOn(component, 'clickHandler');
spyOn(router, 'router.href="/"');
let element = fixture.debugElement.query(By.css('.matTile1select'));
element.triggerEventHandler('click', null);
fixture.detectChanges();
expect(handleSpy).toHaveBeenCalledWith(/* correct params */);

Если вы хотитечтобы опубликовать ваши полные component.spec.ts и component.ts, я мог бы более конкретно указать необходимый код.

Надеюсь, это поможет.

...