加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何在Angular 2中为开发(而不是测试)提供模拟服务?

发布时间:2020-12-17 07:58:26 所属栏目:安全 来源:网络整理
导读:我需要一种方法来在Angular 2的开发期间(而不是在测试期间)模拟我的服务.原因是REST-ful服务器不可靠(更改API而不通知,不稳定,难以擦除并再次站起来) .如果我可以模拟我的服务(基本上都是HTTP REST客户端),那将是很好的. 在Angular 2中创建模拟后端服务的最
我需要一种方法来在Angular 2的开发期间(而不是在测试期间)模拟我的服务.原因是REST-ful服务器不可靠(更改API而不通知,不稳定,难以擦除并再次站起来) .如果我可以模拟我的服务(基本上都是HTTP REST客户端),那将是很好的.

在Angular 2中创建模拟后端服务的最佳方法是什么?在测试方面,我获得了很多关于模拟后端服务的互联网结果,但这个上下文不是我的用例(我不是在嘲笑测试而是开发).

我已经使用angular cli来创建和支撑我的项目,我不确定该工具是否可以提供帮助.

我正在寻找像Spring这样的方法,我们可以使用“profiles”来注释组件/类,然后方便地指定哪个配置文件是活动的,以便注入正确的依赖项.

我认为实现目标的最佳方法是使用接口和服务提供商.我希望以下示例代码可以指出您正确的方向:

数据tables.service-interface.ts

export interface DataTablesServiceInterface {
    getHeaders(): Promise<any[]>;
    getData(query?: string,offset?: number,size?: number): Promise<any>;
}

数据tables.service-provider.ts

import { Http } from '@angular/http';
import { OpaqueToken } from '@angular/core';

import { DataTablesServiceInterface } from './data-tables.service-interface';
import { DataTablesService } from './data-tables.service';
import { DataTablesMockService } from './data-tables.mock-service';

import { environment } from '../../../environments/environment';

let dataTablesServiceFactory = (http: Http) => {
    var serviceToReturn: DataTablesServiceInterface;
    if (environment.production) {
        serviceToReturn = new DataTablesService(http);
    } else {
        serviceToReturn = new DataTablesMockService();
    }
    return serviceToReturn;
};

export let dataTablesToken = new OpaqueToken('DataTablesServiceInterface');

export let dataTablesServiceProvider =
    {
        provide: dataTablesToken,useFactory: dataTablesServiceFactory,deps: [
            Http
        ]
    };

您只需要实现实际和模拟服务,并可以根据已使用环境在angular-cli中实现的嵌入式配置文件机制来提供它们.

编辑:
还有一些我忘记提及的信息.在您的负责模块中,您需要将dataTablesServiceProvider声明为提供者.在您要使用该服务的组件中,DI的方法与标准方法略有不同.

在组件的构造函数中,您编写以下内容:

constructor(@Inject(dataTablesToken) private dataTablesService: DataTablesServiceInterface)

如果您对不透明的令牌感兴趣,我建议您查看Opaque Token by Angular

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读