Jasmine 不适用于文档点击的 link 指令
Jasmine not working for link directive on document click
我的指令 Link 功能如下 -
link:function(scope,elem,attr){
$(document).on("click",function(event){
var target = $(event.target);
if(target.is('.detailBox') || target.closest('.detailBox').length){
return;
}
scope.$emit('closeDetailBox');
scope.$apply();
});
}
下面给出了我用于测试 emit 的 jasmine TC -
it('Some other box click', function () {
spyOn($rootScope, '$emit');
var theboxelement = '<button class="thebox"></button>';
var thebox = $(theboxelement);
$('body').append(thebox);
var spyEvent = spyOnEvent('.thebox', 'click');
thebox.trigger("click");
expect($rootScope.$emit).toHaveBeenCalledWith('closeDetailBox',theboxelement);
thebox.remove();
});
emit 事件本应被触发并捕获,但从未被触发。我收到错误 - "Expected spy $emit to have been called with [ 'closeDetailBox', '' ] but it was never called."
我已经处理这个问题 2 天了,无法修复,请帮助!
根据您的指令,您的事件是从您的指令范围内发出的。您确定这会触发 $rootScope 的 $emit 函数吗?
也许你应该在 $rootScope 上使用 $broadcast ?
根据您的代码,我认为您需要调用 link 函数。然后做剩下的。像 mydirective.link();这将解决您进行的以下函数调用。
如果上述方法不起作用,您可能可以检查以下项目 -
查看您的模块依赖项是否正确解析。
利用本地茉莉花调试。这可能是检查流量的最简单方法。
我的指令 Link 功能如下 -
link:function(scope,elem,attr){
$(document).on("click",function(event){
var target = $(event.target);
if(target.is('.detailBox') || target.closest('.detailBox').length){
return;
}
scope.$emit('closeDetailBox');
scope.$apply();
});
}
下面给出了我用于测试 emit 的 jasmine TC -
it('Some other box click', function () {
spyOn($rootScope, '$emit');
var theboxelement = '<button class="thebox"></button>';
var thebox = $(theboxelement);
$('body').append(thebox);
var spyEvent = spyOnEvent('.thebox', 'click');
thebox.trigger("click");
expect($rootScope.$emit).toHaveBeenCalledWith('closeDetailBox',theboxelement);
thebox.remove();
});
emit 事件本应被触发并捕获,但从未被触发。我收到错误 - "Expected spy $emit to have been called with [ 'closeDetailBox', '' ] but it was never called."
我已经处理这个问题 2 天了,无法修复,请帮助!
根据您的指令,您的事件是从您的指令范围内发出的。您确定这会触发 $rootScope 的 $emit 函数吗?
也许你应该在 $rootScope 上使用 $broadcast ?
根据您的代码,我认为您需要调用 link 函数。然后做剩下的。像 mydirective.link();这将解决您进行的以下函数调用。
如果上述方法不起作用,您可能可以检查以下项目 -
查看您的模块依赖项是否正确解析。
利用本地茉莉花调试。这可能是检查流量的最简单方法。