我的Angular代码中的指令的link函数中有以下构造(工具提示库可以在http://iamceege.github.io/tooltipster/下找到):
scope.$on(MY_EVENTS.DATA_RETRIEVED, function(event) {
$timeout(function() {
var badge = element.find('.tooltip-hook');
badge.tooltipster({
content: $('Default tooltip'),
contentAsHtml: true,
theme: 'tooltipster-light',
functionBefore: function(origin, continueTooltipster) {
continueTooltipster();
origin.tooltipster('content', scope.getTooltip());
}
});
});
});
我遇到的问题是,当我使用Jasmine测试此代码时,覆盖率报告者会抱怨,因为我的测试未涵盖作为functionBefore
传递的函数。
如何在使用Jasmine进行单元测试是否在显示工具提示之前调用此函数(这在技术上不是测试我的代码而是工具提示代码)和(这是关于我的代码)也是内部的语句功能执行?为了测试后者,我必须在已经匿名和本地函数的参数上获得间谍。
我知道我可以使用jasmine-jquery插件模拟一个mouseenter事件,它会激发工具提示显示,但是如何用Jasmine单元测试覆盖functionBefore
?