我是角度和单位测试的新手。
我有一个应用程序模块MyApp
,包括所有其他模块所需的基本服务,例如用于记录的服务loggingService
我还有一个模块,用于处理有关map& geo-positon的所有内容,名为MapModule
,我有一个应用程序逻辑的主模块,名为MainModule
MainModule
包含我想测试的控制器:messageSendCtrl
控制器具有一些依赖性,例如来自MapModule
的服务。
而且:MainModule
和MapModule
与MyApp
有依赖关系,因为到处都需要loggingService
。
代码看起来像那样(伪代码):
MyApp的
var MyApp = angular
.module('MyApp', ['ngRoute','MainModule','MapModule']);
MyApp.service('loggingService', function (one, two) {
[..] /*logging data somewhere for debugging application*/
});
MainModule
var MainModule = angular
.module('MainModule', []);
MainModule.controller('messageSendCtrl',
function($scope,$http, $location, locationService, loggingService) {
[...]
});
MapModule
var MapModule = angular
.module('MapModule', ['uiGmapgoogle-maps']);
MapModule.service('locationService', function (loggingService) {
[...]
我要测试的是来自messageSendCtrl
的{{1}}。 (可能)我能够将位置服务注入测试环境。但注入MainModule
并不成功。
可能是因为locationService
也使用locationService
。
运行测试结果
loggingService
我的测试看起来像这样:
Error: [$injector:unpr] Unknown provider: loggingServiceProvider <- loggingService <- locationService
那么我可以解决依赖关系?或者我的申请是否存在设计问题?
答案 0 :(得分:1)
有很多事情要发生,让我们逐一检查:
beforeEach(module('MainModule'));
var MainModule = angular.module('MainModule', ['MyApp']);
因为您的MainModule中的某个控制器依赖于其他模块中的服务(MyApp)