Angular 2 - 在单元测试中覆盖HTTP请求

时间:2017-01-31 21:55:13

标签: unit-testing angular

我正在使用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$;
    }
}

0 个答案:

没有答案