угловое тестирование 6 модулей Forkjoin сервисный ответ - PullRequest
0 голосов
/ 02 января 2019

У меня есть функция в службе, в которой у меня есть 3 http get call, и я возвращаю ответ с помощью forkJoin, создающего массив, как я буду тестировать эту функцию сервиса в spec.ts? это функция в моем компоненте регистрации, который вызывает сервис,

this.register.registrationData()
  .subscribe(data => {
    this.types = data[0];
    this.modules = data[1];
    this.packages = data[2];
  });

и это моя функция службы регистрации,

registrationData(): Observable<any> {
    const companyTypes =this.http.get(ConstantService.apiRoutes.companyTypes);
    const modules = this.http.get(ConstantService.apiRoutes.modules);
    const packages = this.http.get(ConstantService.apiRoutes.packages);
    return forkJoin([companyTypes, modules, packages]);
}

пока это мой файл спецификаций,

 it('Should require registration data', () => {
  loginRegService.registrationData().subscribe((data) => {
    expect(data).toEqual(regData);
  })
  const reqCompany = httpTestingController.expectOne(`${environment.apiUrl}/anonymous/companyTypes/`);
  const reqModule = httpTestingController.expectOne(`${environment.apiUrl}/anonymous/modules/`);
  const reqPackage = httpTestingController.expectOne(`${environment.apiUrl}/anonymous/packages/`);
  expect(reqCompany.request.method).toBe('GET');
  expect(reqModule.request.method).toBe('GET');
  expect(reqPackage.request.method).toBe('GET');
  const e1 = forkJoin([reqCompany, reqModule, reqPackage]);
  reqCompany.flush(companyType);
  reqModule.flush(modules);
  reqPackage.flush(packages);
});

1 Ответ

0 голосов
/ 02 января 2019

В своем подходе к тестированию вы создаете макеты наблюдаемых HTTP - это хороший способ проверить HTTP-вызовы в Angular.

Однако, если вы ищете более общий способ тестирования rxjs, вы можете использовать их библиотеку мраморов .

На самом деле я написал пример с использованием forkJoin, который вы можете найти здесь .

...