我以前从未测试过我的 angularjs 指令,我为当前公司编写的指令也是使用事件将指令传达给指令和服务。
所以我写了一个指令,例如一个搜索指令。
<m-search />
该指令广播"searchbox-valuechanged"
事件和密钥,现在我必须为它编写测试。
'use strict';
describe('<m-search>', function() {
beforeEach(module('hey.ui'));
var rootScope;
beforeEach(inject(function($injector) {
rootScope = $injector.get('$rootScope');
spyOn(rootScope, '$broadcast');
}));
it("should broadcast something", function() {
expect(rootScope.$broadcast).toHaveBeenCalledWith('searchbox-valuechanged');
});
});
更新 输入的变化,
<input class="m-input m-input--no-border" type="search" placeholder="Search"
ng-model="ctrl.searchValue"
ng-model-options="{debounce: 100}"
ng-change="ctrl.onChange({search: ctrl.searchValue})">
它调用指令控制器中的方法
vm.onChange = function (searchValue) {
$rootScope.$broadcast('searchbox-valuechanged', {data: searchValue});
};
如何测试广播?