gpt4 book ai didi

javascript - 具有相同依赖性的多个 Angular 模块用于业力测试

转载 作者:行者123 更新时间:2023-11-27 23:17:05 25 4
gpt4 key购买 nike

我有一个问题。我有多个具有相同依赖需求的 Angular 模块。目前,下面的代码适用于应用程序运行,但不适用于测试......请参见下文


angular.module('app',['d1','d2'])
angular.module('app.home', []);
angular.module('app.about',[]);

我也在进行 karma 测试,因此当我通过“app.about”模块时,karma 会请求“d1”依赖项。然后我添加了“app”模块并且它可以工作,但我必须将“d2”添加到我的“app.about”规范中,即使“d2”与“app.about”无关。

然后我继续进行以下修复:
angular.module('app',['d1','d2'])
angular.module('app.home', ['d1']);
angular.module('app.about',['d1']);

感觉重复了。所以我的问题是......这就是 Angular 模块的工作原理吗?如果以后我在所有模块中使用“d1”和“d2”怎么办?这不会使我的模块重复吗?同样,由于业力测试,我需要下面的代码。


angular.module('app',['d1','d2'])
angular.module('app.home', ['d1','d2']);
angular.module('app.about',['d1','d2']);

感谢您的帮助。附:我看了 johnpapa 的指南,但我似乎对此不太清楚。

最佳答案

如果这些依赖关系会影响测试结果,您只需提供模拟依赖关系。通常他们不会。但是,您可以通过简单地在实际实现的顶部注册您的模拟来“重新映射”任何依赖项。

例如:

(function() {    'use strict';    var serviceId = 'apiService';    angular.module('app').factory(serviceId,        ['$q', apiService]);    function apiService($q) {        var service = {            sendData: mockFunction,            saveUserState: mockFunction        }        return service;        function mockFunction(){return $q.when({})}    }})();

缺点是这个模拟版本将在任何地方使用,但这通常是您想要的。

请注意,如果 app.home 和 app.about 不包含对 d2 中事物的隐式依赖项,您应该能够通过初始化被测试的模块来避免引导 d2:

beforeEach(module('app.home'));

关于javascript - 具有相同依赖性的多个 Angular 模块用于业力测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35729944/

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