2015-04-02 155 views
2

我对单元测试相对比较陌生,但现在任务是为现有的代码编写测试,这些代码基本上我很清楚。在angularJS中测试服务的单元

可悲的是,我无法取得任何进展,也找不到真正有用的文档。

代码库的主要成分是从一个API检索数据的服务,但我无法得到模块实例的服务属于:

TypeError: module is not a function in /home/faebser/workspace/GridSense-CMS-App/dev/test/unit/api.test.js (line 13) 

因缘配置:http://sprunge.us/ObSP?js

测试:http://sprunge.us/AJWL?js

因缘输出:http://sprunge.us/WYHI?bash

问题是什么?为什么我无法获得模块的实例?

UPDATE1:

我设法重新安装角度和角嘲笑相同版本的加载我的模块。但现在我遇到了以下错误:

minErr/<@/home/faebser/workspace/GridSense-CMS-App/dev/bower_components/angular/angular.js:63:12 
loadModules/<@/home/faebser/workspace/GridSense-CMS-App/dev/bower_components/angular/angular.js:4138:15 
[email protected]/home/faebser/workspace/GridSense-CMS-App/dev/bower_components/angular/angular.js:323:11 
[email protected]/home/faebser/workspace/GridSense-CMS-App/dev/bower_components/angular/angular.js:4099:5 
[email protected]/home/faebser/workspace/GridSense-CMS-App/dev/bower_components/angular/angular.js:4025:11 
[email protected]/home/faebser/workspace/GridSense-CMS-App/dev/bower_components/angular-mocks/angular-mocks.js:2425:44 

我设法跟踪误差降低到以下几点:

"[$injector:modulerr] Failed to instantiate module ui.router due to:[$injector:nomod] Module 'ui.router' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.http://errors.angularjs.org/1.3.15/$injector/nomod?p0=ui.routerminErr/<@http://localhost:9876/base/bower_components/angular/angular.js:63:12module/<@http://localhost:9876/base/bower_components/angular/angular.js:1774:[email protected]://localhost:9876/base/bower_components/angular/angular.js:1698:[email protected]://localhost:9876/base/bower_components/angular/angular.js:1772:1loadModules/<@http://localhost:9876/base/bower_components/angular/angular.js:4115:[email protected]://localhost:9876/base/bower_components/angular/angular.js:323:[email protected]://localhost:9876/base/bower_components/angular/angular.js:4099:5loadModules/<@http://localhost:9876/base/bower_components/angular/angular.js:4116:[email protected]://localho" 

好了,只是忘了UI路由器添加到卡玛配置。

回答

0

好吧,我设法得到这个工作。 的主要问题是角度给了我奇怪的错误信息:

minErr/<@/home/faebser/workspace/GridSense-CMS-App/dev/bower_components/angular/angular.js:63:12 
loadModules/<@/home/faebser/workspace/GridSense-CMS-App/dev/bower_components/angular/angular.js:4138:15 
[email protected]/home/faebser/workspace/GridSense-CMS-App/dev/bower_components/angular/angular.js:323:11 
[email protected]/home/faebser/workspace/GridSense-CMS-App/dev/bower_components/angular/angular.js:4099:5 
[email protected]/home/faebser/workspace/GridSense-CMS-App/dev/bower_components/angular/angular.js:4025:11 
[email protected]/home/faebser/workspace/GridSense-CMS-App/dev/bower_components/angular-mocks/angular-mocks.js:2425:44 

要解决这一点,我使用的业力调试窗口,并设置在angular.js断点:在功能minErr 63(模块ErrorConstructor):

return new ErrorConstructor(message); 

你可以看到参数和编译的错误信息。最后,我忘了在karma配置文件中添加一些依赖关系。

2

它看起来像角模拟没有加载。

检查你的路径。目前,对于因果报应它的样子:

-dev |-test/ |-js/ |-bower_components/ |-karma.conf

因为在karma.conf,您有:

base: '', 
+0

好吧,让这个工作。我正在使用不同版本的角度和角度模拟。 – faebser 2015-04-07 17:08:30