如何将 ngRoute 注入 Jasmine / Karma AngularJS 单元测试?
How to inject ngRoute into Jasmine / Karma AngularJS unit test?
我正在尝试让基本的单元测试示例正常工作。这个 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
});
});
});
使用此业力文件配置
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'
]
当我尝试像这样 app.js 将 ngRoute 注入我的模块时出现问题
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?我尝试了很多方法,none 都奏效了。
显然,您收到此错误是因为 PhantomJS
无法实例化您的主 Angular 模块 whapp
。一个可能的原因是文件 node_modules/angular-mocks/angular-route/angular-route.js
丢失了。
显然,您正在使用 npm
来管理您的依赖项。因此,请尝试将您当前的文件替换为:
node_modules/angular-route/angular-route.js
ui-route
模块也一样:
node_modules/angular-ui-router/release/angular-ui-router.js
希望对您有所帮助。
我正在尝试让基本的单元测试示例正常工作。这个 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
});
});
});
使用此业力文件配置
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'
]
当我尝试像这样 app.js 将 ngRoute 注入我的模块时出现问题
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?我尝试了很多方法,none 都奏效了。
显然,您收到此错误是因为 PhantomJS
无法实例化您的主 Angular 模块 whapp
。一个可能的原因是文件 node_modules/angular-mocks/angular-route/angular-route.js
丢失了。
显然,您正在使用 npm
来管理您的依赖项。因此,请尝试将您当前的文件替换为:
node_modules/angular-route/angular-route.js
ui-route
模块也一样:
node_modules/angular-ui-router/release/angular-ui-router.js
希望对您有所帮助。