我正在尝试为IIFE函数中的以下点击事件编写单元测试。
jQuery(function($)
{
$('span.select-toggle').click(function()
{
$i = $(this);
if ($i.parent().find('ul.select-sub').is(':visible')) {
$i.removeClass('fa-select-down').addClass('fa-select-right');
} else {
$i.removeClass('fa-select-right').addClass('fa-select-down');
}
});
});
HTML fixture文件:
<div id="select">
<ul class="select-stub" style="visibility :visible;">
<span class="select-toggle" ></span>
</ul>
</div>
单元测试:
describe('Selectmenu Expand/Collapse of a node', function () {
beforeAll(function () {
spyOnEvent('.select-toggle', 'click');
$('span.select-toggle').trigger("click");
});
it('Should visible parent node', function () {
expect($('.select-toggle').parent().find('ul.select-sub:visible').count()).toBe(1);
});
});
但是这个spyOnEvent
没有在点击事件中被触发并且测试失败了。有人请建议任何更好的解决方案来解决IIFE功能中的点击事件。
答案 0 :(得分:0)
这是我在IIFE中使用事件监听器的方式,也许它可以提供帮助。请注意,IIFE中的事件侦听器应始终放在IIFE的末尾。
!function() {
function someFunction(){
//some code
}
$('body').on('click', '.someClass', someFunction); //event listener
}();