我对Karma的茉莉花测试很陌生。我在执行测试时遇到以下错误。
这是我的档案。
message.service.js //服务文件
(function() {
'use strict';
angular.module("app").factory('MessageService', [MessageService]);
function MessageService() {
var service = {};
//var gui = require('nw.gui');
service.alert = function() {
//gui.Window.open('/');
//$window.open('/message');
return 'hello';
};
return service;
};
})(); // IIFE
message.service.spec.js //服务测试文件
describe('Message Service', function() {
var messageService;
beforeEach(angular.mock.module('app'));
beforeEach(inject(function(_MessageService_) {
messageService = _MessageService_;
}));
it('should exist', function() {
expect(messageService).toBeDefined();
});
it('should return hello', function() {
expect(messageService.alert()).toEqual('hello');
});
});
app.module.js //主应用文件
(function() {
'use strict';
angular.module("app", ['ngRoute', 'ui.bootstrap', 'ui.router']);
/*angular.module("app").run(['$rootScope', 'StartupService', function($rootScope, startupService){
startupService.init($rootScope);
}]);*/
})(); // IIFE
如果我更改了message.service.js中的以下行
angular.module("app").factory('MessageService', [MessageService]);
到
angular.module("app",[]).factory('MessageService', [MessageService]);
然后测试工作正常,但应用程序将无法工作(由于重新启动模块我猜)。如何使我的应用程序适用于测试和正常的应用程序执行?感谢您的帮助
答案 0 :(得分:0)
这是我的错。我没有在与ui.bootstrap模块相关的Karma配置中包含js文件。之后它运作良好。
对于任何出现此类错误的人,请检查您是否在Karma配置中包含了所有依赖项文件,以及在主应用程序中定义的内容。
例如:假设您的主应用程序文件如下所示。
angular.module("app", ['ngRoute', 'ui.bootstrap', 'ui.router']);
然后您的Karma配置文件应该如下所示
files: [
'assets/lib/angular/angular.min.js',
'assets/lib/angular-ui-router/angular-ui-router.min.js',
'assets/lib/angular-bootstrap/ui-bootstrap-tpls-1.3.2.min.js'
],
感谢您的帮助。