javascript - 如何为需要测试其发射的 Angular Directive(指令)进行 Jasmine 单元测试?

标签 javascript angularjs unit-testing jasmine

如何为需要测试其发射的 Angular Directive(指令)进行 Jasmine 单元测试?

该指令是一个属性指令,并且在我需要测试的指令内有一个发射。

如何最好地做到这一点?

这是我当前的测试:

   //broadcast test:
     describe('broadcast called', function() {

           var rootScope, testService;

           beforeEach(inject(function(_$rootScope_, $injector) {              
                rootScope = _$rootScope_;

                testService = $injector.get('testFactory');

                spyOn(rootScope, "broadcast");
           })); 

           it('should be broadcast', function() {
              testService.emitTest();
              expect(rootScope.broadcast).toHaveBeenCalledWith('test1');
           });
    });

当前代码:

appservicemod.factory('testFactory', ['$rootScope', function ($rootScope) {

        var emitTest = function(){  

                    $rootScope.$broadcast('test1');

        }   

        return {
            emitTest: emitTest
        } 
    }
]);

最佳答案

看来您当前的方法效果很好,除了一些问题:

  • 应该是$broadcast,而不是到处broadcast
  • 您的代码中没有 beforeEach(module('app'))

如果您解决了这些问题,它就会起作用:http://jsfiddle.net/MMiszy/c4fz58sp/1/

describe('broadcast called', function() {
   var $rootScope, testService;

   beforeEach(module('app'));

   beforeEach(inject(function(_$rootScope_, $injector) {              
        $rootScope = _$rootScope_;
        spyOn($rootScope, "$broadcast");
        testService = $injector.get('testFactory');
   })); 

   it('should broadcast', function() {
      testService.emitTest();
      expect($rootScope.$broadcast).toHaveBeenCalledWith('test1');
   });
});

关于javascript - 如何为需要测试其发射的 Angular Directive(指令)进行 Jasmine 单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36166726/

相关文章:

javascript - jQuery: .click() 和 .on ("click"之间的区别)

javascript - 如果数组尚未创建,则为 Ng-init

javascript - 在命令行脚本中包含没有 HTML 或 DOM 的 JS 文件中的 Javascript 文件

c# - 调用函数的设置方法

javascript - 选择下拉列表,如果下拉列表的选定值不为空,则自动选中复选框

javascript - React.renderComponent 不是函数

php - 模拟XSS攻击

javascript - angularJS:用于模式的多个匹配的ng-pattern

javascript - 带有 Rails API 的 Angularjs 休息后 400(错误请求)

java - 如何使用 Mockito 实现复合对象