тестирование angular e2e: как проверить Сервис, внедрить (использовать) другие сервисы - PullRequest
0 голосов
/ 16 ноября 2018

Я пытаюсь проверить свой сервис с помощью e2e test angular 7, моя проблема в том, что я не знаю, как это сделать:

это мой сервис, (метод возврата Observable):

import { Injectable } from '@angular/core';
import { UrlDecoratorService } from "../../common/url-decorator.service";
import { APIFetcherService } from "../common/api-fetcher.service";
import { Observable } from 'rxjs';
import { IALChrono, ALChrono } from '../../common/IALChrono.interface';

@Injectable()
export class AnnonceChronoDetailService {
    private months: string[];
    constructor(private urlDecoratorService: UrlDecoratorService, private apiFetcher: APIFetcherService) {
    }

    fetchData(chronoInfo: ALChrono): Observable<any> {
        // construct API parameters and URL
        var URL: string = this.urlDecoratorService.urlAPIDecorate("AL", "GetAccessChrono");

        var params = this.urlDecoratorService.generateParameters({
            year: chronoInfo.year,
            month: chronoInfo.month,
            sortBy: chronoInfo.sortBy,
            sortDirection: chronoInfo.sortDirection,
            pageNumber: chronoInfo.currentPage,
            pageSize: chronoInfo.pageSize
        });

        return this.apiFetcher.fetchJson(URL, params);
    }
}

в моем сервисе есть две другие службы: UrlDecoratorService и APIFetcherService .

Это мой тест e2e:

import { AppPage } from './app.po';
import { AnnonceChronoDetailService } from '../../src/app/services/annonce-legale/annonce-chrono-detail.service';
import { ALChrono } from '../../src/app/common/IALChrono.interface';
import { APIResponse } from '../../src/app/common/api-response.interface';
import { Observable } from 'rxjs';

describe('workspace-project App', () => {
  let page: AppPage;
  let service: AnnonceChronoDetailService;
  this.chronoInfo = new ALChrono(); //it's a class

  beforeEach(() => {
    page = new AppPage();
  });

  it('should display welcome message', () => {
    page.navigateTo();
    expect(page.getParagraphText()).toEqual('Welcome to MyProject!');
  });


  it('#getObservableValue should return value from observable', (done: DoneFn) => {
    service.fetchData(this.chronoInfo).subscribe((resp: APIResponse) => {
      expect(resp.dataCount).toBe(5);
      done();
    });
  });
});

что мне нужно, это как внедрить две службы UrlDecoratorService и APIFetcherService в мой тест e2e, или как проверить службы, которые внедряют другие службы?

, если вынужно больше информации подскажите пожалуйста.

1 Ответ

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

Таким образом, цель тестирования e2e состоит в том, чтобы на самом деле опробовать ваше приложение в форме сборки, в основном вы сделали

нг билд

в вашем приложении, где вы затем размещаете локально (вы можете сделать это и снаружи), которое только что создали.

Таким образом, в основном ваши службы включены в эти пакеты (точнее, в ваш основной пакет), поэтому вам не нужно настраивать какие-либо настройки, вместо этого начните тестировать ваше приложение с API-интерфейсом транспортира браузером и так далее. Таким образом, ваш тестовый файл может выглядеть примерно так, когда вы смотрите на ваш вопрос:

  describe('workspace-project App', () => {
   let page: AppPage;
   this.chronoInfo = new ALChrono(); //it's a class

   beforeEach(() => {
     page = new AppPage();
   });

   it('should display welcome message', () => {
     page.navigateTo();
     expect(page.getParagraphText()).toEqual('Welcome to MyProject!');
   });
  }

Таким образом, код, включающий сервисный тест, должен быть включен в ваше модульное тестирование. Если вы не уверены в том, как работает транспортир, я предлагаю вам подробнее ознакомиться с документацией о том, как работает установка.

...