gpt4 book ai didi

angularjs - 在 AngularJS 中以编程方式在运行时替换服务

转载 作者:行者123 更新时间:2023-12-03 08:18:18 24 4
gpt4 key购买 nike

出于测试目的,我想替换网络应用程序在运行时具有的一项服务。有一个连接到外部服务的服务在某些本地环境中不可用,我想只执行一个命令将其替换为模拟。

我已经看到我可以在运行时通过调用从 AngularJS 获得任何服务:

> angular.element('html').injector().get('myService')

但我想知道是否有办法用其他东西替换“myService”。

我知道创建一个公开“myService”的“myServiceWrapper”可以让我通过以下操作轻松替换它:

> angular.element('html').injector().get('myServiceWrapper').myService = new Whatever();

但我想避免对已经运行的应用程序进行更改。

最佳答案

您有几个选择。首先,您可以只声明一个具有相同名称的新服务(在已声明原始服务之后)。由于 Angular 目前没有命名空间的概念,您的新服务将覆盖旧服务。

其次,您可以使用 decorator修改部分服务。

最后,ngMockE2E模块还可以让您将 $httpBackend 换成一个模拟的,以使用当前存在的服务,但停止对外部提供商的任何调用。

关于angularjs - 在 AngularJS 中以编程方式在运行时替换服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23789193/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com