我们如何在Jasmine JavaScript Unit测试套件中触发IIFE函数中的click事件

时间:2017-09-02 14:14:30

标签: javascript jquery unit-testing jasmine

我正在尝试为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功能中的点击事件。

1 个答案:

答案 0 :(得分:0)

这是我在IIFE中使用事件监听器的方式,也许它可以提供帮助。请注意,IIFE中的事件侦听器应始终放在IIFE的末尾。

!function() {
   function someFunction(){
      //some code
   }
   $('body').on('click', '.someClass', someFunction); //event listener
}();