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

前端之家收集整理的这篇文章主要介绍了angularjs – 角度JS测试驱动开发与多个控制器前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经开发了使用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,它是一个带有后备服务的指令,可以在任何地方打开/关闭.

原文链接:https://www.f2er.com/angularjs/140570.html

猜你在找的Angularjs相关文章