我只是試圖讓Karma設置來測試我與Jasmine的Angular應用程序。我得到這個錯誤:設置Jasmine&Karma來測試Angular
INFO [karma]: Karma v0.10.4 server started at http://localhost:9876/
INFO [launcher]: Starting browser Chrome
INFO [Chrome 30.0.1599 (Mac OS X 10.9.0)]: Connected on socket pxDaOUXMfGXOVL7ZOuPb
Chrome 30.0.1599 (Mac OS X 10.9.0) ItemCtrl should work FAILED
TypeError: Object [object Object] has no method 'off'
at null.<anonymous> (/Users/macbookpro/Sites/groceries/spec/angular-mocks.js:1917:36)
下面是功能angular-mocks.js
:
afterEach(function() {
var injector = currentSpec.$injector;
currentSpec.$injector = null;
currentSpec.$modules = null;
currentSpec = null;
if (injector) {
injector.get('$rootElement').off();
injector.get('$browser').pollFns.length = 0;
}
angular.mock.clearDataCache();
// clean up jquery's fragment cache
angular.forEach(angular.element.fragments, function(val, key) {
delete angular.element.fragments[key];
});
MockXhr.$$lastInstance = null;
angular.forEach(angular.callbacks, function(val, key) {
delete angular.callbacks[key];
});
angular.callbacks.counter = 0;
});
我想我只是需要在我的業力的配置順序錯誤文件。這是我的文件結構:
karama.config.js
是在同一個目錄/spec
因爲它需要的文件:
// list of files/patterns to load in the browser
files: [
'angular.min.js',
'angular-mocks.js',
'app_testable.js',
'app_spec.js'
],
app_testable.js
是我的應用程序的精簡版與除角度沒有依賴關係。這是我的測試。我只是想讓true
成爲true
。
'use strict';
describe('ItemCtrl', function(){
var scope;
beforeEach(angular.mock.module('Grocerease'));
beforeEach(angular.mock.inject(function($rootScope, $controller){
scope = $rootScope.$new();
$controller('ItemCtrl', {$scope: scope});
})
);
it('should work', function(){
expect(true).toBe(true);
});
});
我該如何設置業力,才能正確運行測試?
你在使用jQuery嗎? – dimirc
編號我正在使用的唯一文件在上面列出。另外,我沒有包含角度資源,因爲我沒有使用路由器模塊。這是必需的嗎? – nickcoxdotme
angular-resource不適用於路由器模塊,而是處理來自REST API的「資源」。請重新檢查一下,您是否錯過了可能在index.html – dimirc