Служба тестирования, которая читает файл JSON - PullRequest
0 голосов
/ 14 марта 2019

У меня есть следующий сервис, который извлекает данные из файла json:

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';

@Injectable()
export class DataService {
  public timezones: any;
  private timeZonesDataPath = './assets/data/timezones.json';

  constructor(
    public httpClient: HttpClient
  ) {
    this.timezones = this.httpClient.get(this.timeZonesDataPath);
  }

  public getAllTimezones(): Observable<any> {
    return this.timezones;
  }
}

Я начал тестировать его, но продолжаю сталкиваться с проблемами.Большая часть документации в Интернете предназначена для тестирования реальных API, я просто хочу проверить, правильно ли загружаются мои файлы json, есть ли способ сделать это для меня.Пока это мой тестовый скрипт.

import { TestBed, inject } from '@angular/core/testing';
import { DataService } from './data.service';
import { RouterTestingModule } from '@angular/router/testing';
import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing';

describe('DataService unit tests', () => {
  beforeEach(() => TestBed.configureTestingModule({
    imports: [
      RouterTestingModule,
      HttpClientTestingModule
    ],
    providers: [
      DataService
    ]
  }));

  describe('getAllTimezones()', () => {
    it('should return total number of timezones', () => {
      const dataService = TestBed.get(DataService);
      const httpMock = TestBed.get(HttpTestingController);
      dataService.getAllTimezones().subscribe((data: any) => {
        console.log(data);
        expect(data.length).toBeGreaterThan(0);
      });

      const req = httpMock.expectOne('./assets/data/timezones.json');
      console.log(req);
      expect(req.request.method).toEqual('GET');
      req.flush({data: 'test'});
    });
  });

В настоящее время я получаю сообщение об ошибке: DataService unit tests getAllTimezones() should return total number of timezones FAILED Expected undefined to be greater than 0. - как я могу это исправить?Я ожидаю увидеть следующее загруженное:

[
  {
    "value": "Dateline Standard Time",
    "abbr": "DST",
    "offset": -12,
    "isdst": false,
    "text": "(UTC-12:00) International Date Line West",
    "utc": [
      "Etc/GMT+12"
    ]
  },
  {
    "value": "UTC-11",
    "abbr": "U",
    "offset": -11,
    "isdst": false,
    "text": "(UTC-11:00) Coordinated Universal Time-11",
    "utc": [
      "Etc/GMT+11",
      "Pacific/Midway",
      "Pacific/Niue",
      "Pacific/Pago_Pago"
    ]
  }
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...