У меня есть следующий сервис, который извлекает данные из файла 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"
]
}
]