2017-09-02 9 views
0

IIFE関数内で次のクリックイベントの単体テストを作成しようとしています。JASMine JavaScript Unitテストスイートで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の機能内でクリックイベントを発生させるためのより良い解決策を提案してください。

答えて

0

これは、IIFEの内部でイベントリスナーを使用する方法です。多分役立つかもしれません。 IIFE内のイベントリスナーは、常にIIFEの最後に配置する必要があります。

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

スクリプトの現在の動作を変更することはできません。私は本当に単体テストでそのイベントリスナーを起動したい。だから、より良いアプローチ? – supun94

関連する問題