• 测试HTTP请求

    测试HTTP请求

    服务,由于它们执行异步任务的性质。 当我们进行HTTP请求时,我们使用异步方式,以免阻止应用程序的其余部分执行其操作。我们之前了解了一些组件的异步测试,幸运的是,很多这方面的知识也带到了测试异步服务中。

    测试这种服务的基本策略是验证请求的内容(正确的URL),并确保我们模拟到服务中的数据通过正确的方法正确返回。

    让我们来看一些代码:

    wikisearch.ts

    1. import {Http} from '@angular/http';
    2. import {Injectable} from '@angular/core';
    3. import {Observable} from 'rxjs';
    4. import 'rxjs/add/operator/map'
    5. @Injectable()
    6. export class SearchWiki {
    7. constructor (private http: Http) {}
    8. search(term: string): Observable<any> {
    9. return this.http.get(
    10. 'https://en.wikipedia.org/w/api.php?' +
    11. 'action=query&list=search&srsearch=' + term
    12. ).map((response) => response.json());
    13. }
    14. searchXML(term: string): Observable<any> {
    15. return this.http.get(
    16. 'https://en.wikipedia.org/w/api.php?' +
    17. 'action=query&list=search&format=xmlfm&srsearch=' + term
    18. );
    19. }
    20. }

    这里是一个基本的服务。 它将使用搜索项查询维基百科,并返回一个带有查询结果的Observable。 搜索功能将使用提供的术语进行GET请求,searchXML方法将执行相同的操作,但请求响应为XML而不是JSON。 正如你可以看到,它取决于HTTP模块向wikipedia.org发出请求。

    我们的测试策略是检查服务是否已请求正确的网址,一旦我们回复了模拟数据,我们就要验证它是否返回相同的数据。