Как выполнить юнит-тестирование сервиса в angular юнит-тестировании? - PullRequest
0 голосов
/ 30 марта 2020

У меня в службе есть следующая функция:

 exportPayGapDetails(filterObject: PayGapDetailFilter): void {
  const url = `${this.payGapDetailExportUrls[filterObject.type]}`;

  this.http
  .post<PollInitResponse>(
    `/adpi/rest/v2/sb/pe/v1/export/1/getStatusValue/222`,
    {}
  )
  .subscribe(
    res => {
      if (res) {
        this.pollingServiceService.pollRequest(
          `/adpi/rest/v2/sb/pe/v1/export/1/status`,
          this.ReadytoDownload.bind(this),
          this.PollCondition.bind(this)
        );
      } else {
        this.showToastMessage('error found);
      }
    },
    () => {
      this.showToastMessage('error found'

      );
    }
  );
}

Мой тестовый случай,

  it('should call gender pay gap details init api when we pass type as GENDER_GAP on Export', fakeAsync(() => {
  spyOn(pollingService, 'pollRequest').and.callThrough();
  payGapDetailsService.exportPayGapDetails(filterDetailObject);
  // pollingService.pollSubscriptions.unsubscribe();
  tick();
  const req = http.expectOne(
    request =>
      request.method === 'POST' &&
      request.url === '/adpi/rest/v2/sb/pe/v1/export/1/getStatusValue/222'
  );
  req.flush(exportInitSucessResponse);
  http.verify();
}));

При запуске он выдает ошибку,

Error: Expected no open requests, found 1: GET /adpi/rest/v2/sb/pe/v1/export/1/status

Я понял, что это относится к this.pollingServiceService.pollRequest (этой функции, но я не уверен, как ее решить. Может кто-нибудь предложить мне помощь. Спасибо.

1 Ответ

0 голосов
/ 30 марта 2020

Попробуйте смоделировать этот запрос с помощью HttpTestingController:

  it('should call gender pay gap details init api when we pass type as GENDER_GAP on Export', fakeAsync(() => {
 spyOn(pollingService, 'pollRequest').and.callThrough();
 payGapDetailsService.exportPayGapDetails(filterDetailObject);
 httpMock = TestBed.get(HttpTestingController);
 tick();
 const request = httpMock.expectOne('/adpi/rest/v2/sb/pe/v1/export/1/getStatusValue/222');
 expect(request.request.method).toEqual('POST');
 req.flush(exportInitSucessResponse);
 http.verify();
}));
...