我正在使用Angular 2.31。我想为调用API的服务设置单元测试。为此,我需要伪造API调用的HTTP响应。
在下面的示例中,我有一个瘦的ExampleService,它扩展了APIService,后者又处理所有后端复杂性。我会订阅ExampleService.exampleData $来从API调用中获取信息。我需要在单元测试期间以某种方式覆盖HTTP请求,以便我可以注入假数据。
的伪代码:
class ExampleService extends APIService {
private _dataForTheAPI: {} = { ...stuff... };
constructor(private _http: Http) {
super(_http, this._dataForTheAPI);
}
get exampleData$(): BehaviorSubject<any> {
return this.data$;
}
}
class APIService {
private _apiUrl: string = 'http://somewhere';
private _storage$: BehaviorSubject<any[]>;
constructor(private _http: Http, private _dataForTheAPI: any) {
this._getDataFromApi(_dataForTheAPI);
}
private _getDataFromApi(data: any): void {
this._http
.post(this._apiUrl, JSON.stringify(data))
.map(response => {
this._storage$.next(response.json());
});
}
get data$(): BehaviorSubject<any> {
return this._storage$;
}
}