Угловое тестирование наблюдается в обслуживании - PullRequest
0 голосов
/ 30 января 2019

Я бы хотел проверить работоспособность функции.Но я не могу проверить подписку.Как я могу это сделать?

Функция для проверки:

  getInvestigates(page, lim): any {
    return this.http.get(`${this.bcUrl}/api/investigates?page=${page}&size=${lim}`, this.httpOptions)
      .subscribe(
        (data: DataInterface) => {
          this.investigates = data.content;
          this.st.totalPages = data.totalPages;
          this.st.totalElements = data.totalElements;
        },
        error => {
          if (error.status === 404) {
            alert('Not found');
          }
        });
  }

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019
it('should not get investigate if error', inject([InvestigateService, 
HttpTestingController],
(service: InvestigateService, backend: HttpTestingController) => {

  service.getInvestigates(1, 1);
  backend.expectOne({
    method: 'GET',
    url: 'http://30.30.0.101:8080/api/investigates?page=1&size=1'
  }).flush(null, {status: 404, statusText: 'Not Found'});
  expect(service.investigates).toBeFalsy();
}));
0 голосов
/ 31 января 2019

Нашел, как проверить эту функцию.Но все же, не могу проверить ошибку.

error => {
      if (error.status === 404) {
        alert('Not found');
      }

spec:

 it('should get investigate', inject([InvestigateService, HttpTestingController],
    (service: InvestigateService, backend: HttpTestingController) => {
    const mockInvestigates = {
      'content':
        {
          'id': 6,
          'investigateType': 'WARN',
          'number': '12018150030005555',
          'investigatePriority': 'NORMAL',
          'investigateStatus': 'OPEN',
          'correction': {
            'create': 1527454800,
            'action': 'CREATE',
            'user_id': 6
          },
          'hide': false,
          'tags': [
            {
              'id': 1,
              'name': 'Кражи',
              'correction': {
                'action': 'UPDATE',
                'user_id': 1
              }
            }
          ],
        }};

    service.getInvestigates(1, 1);
    backend.expectOne({
      method: 'GET',
      url: 'http://30.30.0.101:8080/api/investigates?page=1&size=1'
    }).flush(mockInvestigates);
    expect(service.investigates).toBe(mockInvestigates.content);
  }));

думаю, что я должен добавить публичную ошибку в функцию и сделать фиктивную функцию, которая возвращаетmockInvestigates или ошибка?

как то так.

class InvestigatesStub {
  public error = false;
  mockGetInvestigates() {
    if (this.error) {
      return Observable.throw(new Error('Test error'));
    } else {
      return Observable.from(data);
    }
  }
}
...