spyOn a Subscription.unsubscribe() - тестирование угловых
Я пытаюсь проверить, вызван ли метод отказа от подписки, и я получаю сообщение об ошибке.
Мой компонент выглядит так:
import { Component, OnInit } from '@angular/core'; import {
Subscription } from 'rxjs/Subscription'; import { LoaderService } from
'@core/components/loaders/services/loader.service';
@Component({ selector: 'loader-mask', templateUrl:
'./loader-mask.component.html', styleUrls:
['./loader-mask.component.css'] })
export class LoaderMaskComponent implements OnInit {
subscription: Subscription;
ngOnDestroy() {
this.subscription.unsubscribe();
}
}
и мой тест выглядит так
it('should call unsubscribe() on ngOnDestroy', ()
=> {
let spy = spyOn(component['subscription'], 'unsubscribe').and.callFake( () => {});
component.ngOnDestroy();
expect(spy).toHaveBeenCalled(); });
но я получаю эту ошибку
Error: <spyOn> : could not find an object to spy upon for unsubscribe()
1 ответ
Решение
const spy = spyOn(
(component as any).subscription,
'unsubscribe'
).and.callThrough()
component.ngOnDestroy();
expect(spy).toHaveBeenCalled();
Попробуйте, у меня была та же проблема, и, насколько я помню, я использовал вышеуказанный способ ее решения. Пожалуйста, проверьте и подтвердите.
component.subscription = new Subscription();
const subscription = spyOn(component.subscription, 'unsubscribe');
component.ngOnDestroy();
expect(subscription).toHaveBeenCalledTimes(1);