【问题标题】:Angular2 how to mock backend for developmentAngular2如何模拟后端进行开发
【发布时间】:2016-10-11 01:25:33
【问题描述】:

我正在用 angular2 编写一个应用程序,我想模拟后端,但目前还没有准备好。

这是我的服务:

import { Injectable } from '@angular/core';
import { Http, Headers, Response, RequestOptions } from '@angular/http';
import { Observable } from 'rxjs/Observable';

import { Item } from './item';

@Injectable()
export class ItemService {

    private itemUrl = 'api/item';  // URL to web api

    constructor(private http: Http) { }

    getItems(): Observable<Item[]> {
        return this.http
            .get(this.itemUrl)
            .map(this.extractData)
            .catch(this.handleError);
    }

    addItem(name: string): Observable<Item> {
        let body = JSON.stringify({ name });
        let headers = new Headers({ 'Content-Type': 'application/json' });
        let options = new RequestOptions({ headers: headers });

        return this.http.post(this.itemUrl, body, options)
            .map(this.extractData)
            .catch(this.handleError);
    }

    private extractData(res: Response) {
        let body = res.json();
        return body.data || {};
    }

    private handleError(error: any) {
        let errMsg = 'error';
        return Observable.throw(errMsg);
    }
}

并且我想拦截在我的 TypeScript 代码中对“itemUrl”发出的每个请求,并对通常的列表进行简单的操作。

【问题讨论】:

    标签: angular mocking xmlhttprequest backend


    【解决方案1】:

    您可能应该使用angular-in-memory-web-api。有关示例,请参阅this post。另请查看the documentation。从长远来看,使用它可能会比尝试使用 Angular 的 MockBackend 节省更多时间。您可以将 in-memory-web-api 用于单元测试测试开发。

    【讨论】:

    • angular-in-memory-web-api 是“实验性的,不适合生产使用”这一事实呢?
    • @RuiMarques 为什么要将它用于生产?它真的只用于开发和演示。
    猜你喜欢
    • 1970-01-01
    • 2018-03-11
    • 2013-08-29
    • 1970-01-01
    • 2015-12-26
    • 1970-01-01
    • 1970-01-01
    • 2018-03-11
    • 1970-01-01
    相关资源
    最近更新 更多