Нет необходимости использовать HTTPInterceptors, если вы хотите использовать только поддельные HTTP-запросы, вы можете просто использовать mocked Services. Допустим, у вас есть простой data.service.ts как это:
import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Observable } from 'rxjs/Observable';
@Injectable()
export class DataService {
constructor(private http: HttpClient) {
}
getData(): Observable<Data[]> {
return this.http.get<Data[]>(url);
}
}
Вы можете смоделировать ваш файл с именем mockData.service.ts:
import { Injectable } from '@angular/core';
import 'rxjs/add/observable/of';
import { Observable } from 'rxjs/Observable';
@Injectable()
export class MockDataService {
// Your data goes either here or import it via an external file
data: Data[] = [
...
];
constructor() {
}
// Use the same name for the method here
getData(): Observable<Data[]> {
return Obersvable.of(this.data);
}
В вашем тестовом файле component.spec.ts вы просто используете mocked dataservice, как это внутри TestBed.configureTestingModule
:
providers: [
{
provide: DataService,
useClass: MockDataService
}
]
Просто определите все методы http, которые используются в тестируемом компоненте, и предоставьте соответствующие данные.
Надеюсь, это поможет!