【问题标题】:How do we fire click event inside IIFE function in Jasmine JavaScript Unit test suite我们如何在 Jasmine JavaScript 单元测试套件的 IIFE 函数中触发点击事件
【发布时间】:2017-09-02 14:14:30
【问题描述】:

我正在尝试为 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 夹具文件:

<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 函数中的点击事件。

【问题讨论】:

    标签: javascript jquery unit-testing jasmine


    【解决方案1】:

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

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

    【讨论】:

    • 我无法更改脚本的当前行为。我真的很想在单元测试中触发那个事件监听器。那么有更好的方法吗?
    猜你喜欢
    • 2019-07-23
    • 2021-01-02
    • 2013-05-29
    • 2020-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多