Как проверить, что я отписался с помощью ngx-auto-unsubscribe? - PullRequest
0 голосов
/ 25 сентября 2018

Есть ли способ написать модульный тест, чтобы проверить, успешно ли я отписался от подписки Observable?

Я использую ngx-auto-unsubscribe.

пример:

@AutoUnsubscribe()
@Component
// Template and style urls

export class MyComp implements OnInit, OnDestroy {

   mySub: Subscription;

   constructor(private myService: MyService) { }

   ngOnInit() {
      this.myService.doSomething.subscribe(res => {
         console.log(res);
      })
   }

   ngOnDestroy() {
     // Only used for AOT (ahead of time) compilation
   }
}

1 Ответ

0 голосов
/ 25 сентября 2018

Да, есть способ (хотя я не думаю, что это нужно проверять).

Я не собираюсь писать весь тест для вас, но вот логика:

  • Создайте родительский компонент (назовем его MockComponent) в вашем тесте с базовым условием ngIf для отображения вашего MyComp или нет
  • Смоделируйте наблюдаемое из вашего сервиса, используя другое наблюдаемое, котороеВы построили так:

.

const obsCleanUpFunction = jasmine.createSpy();

const obs$ = new Observable(observer => {
  //following will be called when/if the observable if completed
  return obsCleanUpFunction;
});
  • Создайте компонент MockComponent с MyComp в нем
  • Запустите обнаружение измененийпройти в ngOnInit и подписаться на него
  • На компоненте MockComponent установите условие для отображения MyComp в значение false -> оно будет уничтожено ngIf, оценивающим в значение false
  • Ожидайте жасминового шпиона toHaveBeenCalled
...