与Karma进行角度应用测试

时间:2016-12-31 13:47:15

标签: angularjs unit-testing jasmine karma-jasmine

我对Karma的茉莉花测试很陌生。我在执行测试时遇到以下错误。

enter image description here

这是我的档案。

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]);

然后测试工作正常,但应用程序将无法工作(由于重新启动模块我猜)。如何使我的应用程序适用于测试和正常的应用程序执行?感谢您的帮助

1 个答案:

答案 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'
],

感谢您的帮助。