Вам следует смоделировать вашу приватную переменную (к которой вы можете получить доступ через нотацию массива), затем вызвать вашу функцию и ожидать, что подкатегория будет закрыта.
Stackblitz
it('should unsubscribe on destroy', () => {
component['querySubscription'] = of(true).subscribe();
component.ngOnDestroy();
expect(component['querySubscription'].closed).toBeTruthy();
});
EDIT 1
Это решение работает из-за записи в массиве.В javascript у вас нет личных или общедоступных переменных: у вас есть только переменные.
Typescript заставляет вас соблюдать private / public, но вы всегда можете обойти это.
Если вы не хотите этого делать, вы должны создать публичную функцию, которая создает подписку, например, так:
createSubscription() {
this.querySubscription = this.someFunction().subscribe();
}
Это единственное другое жизнеспособное решение, если вы не хотите использоватьзапись массива (что, как я забыл упомянуть, совсем не плохая практика).
Вам решать, какой из них вы предпочитаете!