Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将ngRoute注入Jasmine/Karma AngularJS单元测试?_Javascript_Angularjs_Karma Jasmine_Ngroute - Fatal编程技术网

Javascript 如何将ngRoute注入Jasmine/Karma AngularJS单元测试?

Javascript 如何将ngRoute注入Jasmine/Karma AngularJS单元测试?,javascript,angularjs,karma-jasmine,ngroute,Javascript,Angularjs,Karma Jasmine,Ngroute,我正在尝试让一个基本的单元测试示例正常工作。使用这个app.js,一切都很好 var whapp = angular.module('whapp', []) .filter('reverse',[function(){ return function(string){ return string.split('').reverse().join(''); } }]); 还有这个spec.js describe('Filters', function(){ //d

我正在尝试让一个基本的单元测试示例正常工作。使用这个app.js,一切都很好

var whapp = angular.module('whapp', [])
.filter('reverse',[function(){
    return function(string){
        return string.split('').reverse().join('');
    }
}]);
还有这个spec.js

describe('Filters', function(){ //describe your object type
    beforeEach(module('whapp')); //load module
    describe('reverse',function(){ //describe your app name
        var reverse, rootScope;
        beforeEach(inject(function($filter){ //initialize your filter
            reverse = $filter('reverse',{});
        }));
        it('Should reverse a string', function(){  //write tests
            expect(reverse('rahil')).toBe('lihar'); //pass
        });
    });
});
使用此karma文件配置

files: [
    'node_modules/angular/angular.js',
    'node_modules/angular-mocks/angular-mocks.js',
    'node_modules/angular-mocks/angular-route/angular-route.js',
    'node_modules/angular-mocks/angular-ui-router/release/angular-ui-router.js',
      'app/js/*.js',
      'tests/*.js'
]
当我尝试将ngRoute注入app.js中的模块时,问题就出现了

var whapp = angular.module('whapp', ['ngRoute'])
.filter('reverse',[function(){
    return function(string){
        return string.split('').reverse().join('');
    }
}]);
在这种情况下,我在karma中得到以下错误[更新:即使我没有将angular-mock.js库加载到karma中,也会发生此错误,如上所示]

TypeError: undefined is not a constructor (evaluating 'reverse('rahil')') in tests/spec.js (line 9)

所以。。。如何将ngRoute正确注入spec.js?我尝试了很多方法,但都没有成功。

显然,你会出现这个错误,因为
PhantomJS
无法实例化你的主角度模块
whapp
。一个可能的原因是缺少文件
node\u modules/angular mock/angular route/angular route.js

显然,您正在使用
npm
来管理依赖关系。因此,请尝试将当前文件替换为:

node_modules/angular-route/angular-route.js
ui路由
模块也一样:

node_modules/angular-ui-router/release/angular-ui-router.js

我希望这会对您有所帮助。

如果您不加载模拟ng路线,而只允许angular.js中的路线加载,会发生什么?@Amy Blankenship。我得到了描述的错误。我没有加载模拟ng路线,因为我不知道如何。。。这正是问题所在–如何加载模拟ng路线?除非你说的是karma配置中的文件属性?如果我删除了这些,我仍然会得到相同的错误。嗯,你绝对是,除非它只是一个幻影文件,在路径
'node\u modules/angular mock/angular route/angular route.js'
中不存在。如果它不存在,那么很可能会导致问题。对不起,也许我只是不清楚。我正在将其作为库加载是的。但是,如果我不将其作为库加载,我仍然会得到相同的错误。我所说的“我没有加载mock”的意思是,我没有将它作为依赖项注入spec.js,因为我不知道如何操作——我想我需要,但不清楚如何操作。谢谢。我是一个非常愚蠢的n00b。。。基本上,karma配置中的包含路径是错误的,正如一些评论者试图指出的那样,尽管语言不太清晰。做得好!不客气。只是一个提示,下次尝试切换到chrome时,它将抛出一个有意义的错误!