我想要獲得一個基本的單元測試示例工作。這一切都正常工作與此app.js如何將ngRoute注入Jasmine/Karma AngularJS單元測試?
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'
]
,當我嘗試注入到ngRoute出現的問題我的模塊在app.js像這樣
var whapp = angular.module('whapp', ['ngRoute'])
.filter('reverse',[function(){
return function(string){
return string.split('').reverse().join('');
}
}]);
在這種情況下,我得到了因果報應以下錯誤:
TypeError: undefined is not a constructor (evaluating 'reverse('rahil')') in tests/spec.js (line 9)
那麼怎麼辦[更新,即使我沒有角,mock.js庫加載到因果報應如上圖所示出現此錯誤] ...我正確地注入ngRoute到spec.js中?我嘗試了各種各樣的東西,其中沒有一個能夠工作。
如果你不加載ng-route的模擬,但只是允許加載angular.js中的那個,會發生什麼? –
@Amy Blankenship。我得到了描述的錯誤。我沒有加載ng路由的模擬,因爲我不知道如何......這正是問題 - 我怎樣才能加載ng路由的模擬?除非你在談論karma配置中的文件屬性?如果我刪除了這些,我仍然會得到同樣的錯誤。 – geoidesic
恩,你絕對是,除非它只是一個幻像文件,不存在於路徑''node_modules/angular-mocks/angular-route/angular-route.js''。如果它不存在,那很可能會導致問題。 –