gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 14:51:16 25 4
gpt4 key购买 nike

如何为需要测试其发射的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com