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

angularjs – 角度JS测试驱动开发与多个控制器

发布时间:2020-12-17 09:29:36 所属栏目:安全 来源:网络整理
导读:我已经开发了使用Angular JS的Web应用程序.我在使用TTD方法时需要实现更多的CR.我们使用茉莉花和羯磨返回单元测试用例.我们面临的挑战是当我们尝试为多个控制器编写单元测试用例时.我有一个主页返回家庭控制器它在另一个控制器中有一个广播事件.当我写一个单
我已经开发了使用Angular JS的Web应用程序.我在使用TTD方法时需要实现更多的CR.我们使用茉莉花和羯磨返回单元测试用例.我们面临的挑战是当我们尝试为多个控制器编写单元测试用例时.我有一个主页返回家庭控制器&它在另一个控制器中有一个广播事件.当我写一个单元测试用例对于具有该广播事件的控制器的对象未被初始化.

有没有办法将第二个控制器作为依赖对象进行注入.答案与参考样例链接或演示代码是非常感谢.

你说你正在使用茉莉和羯磨,所以我假设你是单元测试.如果您是“单位”测试,您应该单独测试每个控制器,同时嘲笑,间谍,所有注入的服务.
beforeEach(inject(function ($rootScope,$controller) {
        rootScope = $rootScope;
        scope = $rootScope.$new();
        controller = $controller('MyCtrl as ctrl',{
            '$scope': scope
        });            
    }));

    it('',function(){

     //Arrange
     controller.counter = 0; // Your controller is listening on scope.$on to update this counter.

     //Act
     rootScope.$broadcast('xyz',{});

     //Assert
     expect(controller.counter == 1).toBe(true);
     rootScope.$broadcast('xyz',{});
     expect(controller.counter == 2).toBe(true);
     rootScope.$broadcast('xyz',{});
     expect(controller.counter == 3).toBe(true);
    });

只要小心广播.只有域名活动(模型更新/删除/创建)或全局(登录,注销)应该超过$广播.否则,它应该被替换为一个服务指令.一个例子是角材料https://material.angularjs.org/latest/api/service/ $mdDialog,它是一个带有后备服务的指令,可以在任何地方打开/关闭.

(编辑:李大同)

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

    推荐文章
      热点阅读