2017-03-29 8 views
0

私の会社が維持する内部フレームワークのテストを書いています。その中には、jQueryの$(document).ready(handler)メソッドと同等のメソッドがあります。この方法は、次のようになります。Karma-Mocha - DOMContentLoadedイベントをリッスンするメソッドをテストする方法

export function $ready(fn) { 
    document.readyState === 'complete' ? 
     $exec(fn) : 
     document.addEventListener('DOMContentLoaded', function() { 
      $exec(fn); 
     }); 
} 

私は、しかし、私は私のテストを実行するために取得する方法を知らない、イベントリスナーのコールバックではなく、すぐに実行fnを実行するテストを書くことができるようにしたいと思いますreadyStatecompleteに設定される前に、DOMContentLoadedイベントを再トリガーする方法についても知りません。どんな勧告も認められるだろう。

答えて

0

再トリガDOMContentLoaded

// Create the event. 
var event = document.createEvent('Event'); 

// Define that the event name is 'DOMContentLoaded'. 
event.initEvent('DOMContentLoaded', true, true); 

window.document.dispatchEvent(event); 

次に、あなたは

describe('Some feature', function() { 
    it('should increase the number of div', function(){ 
    expect(document.querySelector('div')).to.equal(10); 
    // retrigger DOMContentLoaded event here 
    expect(document.querySelector('div')).to.equal(15); 
    }); 
}); 

createEvent API

それをテストすることができます
関連する問題