加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

单元测试 – 用茉莉花和羯磨测试模块化AngularJS

发布时间:2020-12-17 07:44:00 所属栏目:安全 来源:网络整理
导读:在茉莉花/羯磨中努力进行单元测试.我有一个具有服务依赖关系的控制器,该服务具有另一个服务依赖关系.我没有按类型(指令,服务等)组织我的模块,而是通过功能(布局,summaryView等)组织我的模块. 这是架构: angular.module('myApp',['ngResource','myApp.base',
在茉莉花/羯磨中努力进行单元测试.我有一个具有服务依赖关系的控制器,该服务具有另一个服务依赖关系.我没有按类型(指令,服务等)组织我的模块,而是通过功能(布局,summaryView等)组织我的模块.

这是架构:

angular.module('myApp',['ngResource','myApp.base','myApp.layout','myApp.common']);
angular.module('myApp.base',['myApp.common']);
angular.module('myApp.common',[]);
angular.module('myApp.layout',['myApp.common']);

控制器:

angular.module('myApp.layout')
    .controller('LayoutCtrl',['$scope','$rootScope','$timeout','layoutService','urlService','BaseService',function ($scope,$rootScope,$timeout,layoutService,urlService,BaseService) {
            //controller code here
    });

布局服务:

angular.module('myApp.layout')
    .service('layoutService',['$http','$resource','$location','$route','errorHandlingService','utilService',function ($http,$resource,$location,$route,errorHandlingService,utilService) {
            //service code here
    });

从我的理解,如果我只是包括beforeEach(module(‘myApp.layout’));我应该可以访问我的控制器,服务,过滤器和指令在我的布局模块.

相反,以下代码失败:

describe('Layout Controller',function() {
  var ctrl,scope,service;

  beforeEach(module('myApp'));
  beforeEach(module('myApp.layout'));
  beforeEach(inject(function($controller,layoutService) {

      scope = $rootScope.$new();
      service = layoutService;
      //Create the controller with the new scope
      ctrl = $controller('LayoutCtrl',{$scope: scope,layoutService: service});
      dump(scope);
    }));
    it('should exist',function() {
        expect(ctrl).toBeDefined();
    });
});

有了这个错误:

Chrome 26.0 (Mac) Layout Controller should exist FAILED
    Error: Unknown provider: layoutServiceProvider <- layoutService
        at Error (<anonymous>)
        at http://ajax.googleapis.com/ajax/libs/angularjs/1.0.4/angular.min.js:28:236
        at Object.c [as get] (http://ajax.googleapis.com/ajax/libs/angularjs/1.0.4/angular.min.js:26:13)
        at http://ajax.googleapis.com/ajax/libs/angularjs/1.0.4/angular.min.js:28:317
        at c (http://ajax.googleapis.com/ajax/libs/angularjs/1.0.4/angular.min.js:26:13)
        at Object.d [as invoke] (http://ajax.googleapis.com/ajax/libs/angularjs/1.0.4/angular.min.js:26:147)
        at workFn (http://code.angularjs.org/1.0.4/angular-mocks.js:1754:20)
    Error: Declaration Location
        at window.jasmine.window.inject.angular.mock.inject (http://code.angularjs.org/1.0.4/angular-mocks.js:1740:25)
        at null.<anonymous> (/Users/scottsilvi/svn/BARO/web/src/test/js/unit/myApp.layoutModule.js:6:14)
        at /Users/scottsilvi/svn/BARO/web/src/test/js/unit/myApp.layoutModule.js:1:1
    Expected undefined to be defined.
    Error: Expected undefined to be defined.
        at null.<anonymous> (/Users/scottsilvi/svn/BARO/web/src/test/js/unit/myApp.layoutModule.js:15:16)
Chrome 26.0 (Mac): Executed 10 of 10 (1 FAILED) (0.36 secs / 0.014 secs)

思考?

通常,未知的提供者错误来自未加载的文件或以不正确的顺序加载.检查运行中的文件是否存在.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读