【问题标题】:Karma-Mocha - How to test method that listens to DOMContentLoaded eventKarma-Mocha - 如何测试监听 DOMContentLoaded 事件的方法
【发布时间】:2017-03-29 02:49:53
【问题描述】:

我正在为我公司维护的内部框架编写测试。其中有一个方法等效于 jQuery 的$(document).ready(handler) 方法。该方法如下所示:

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

我希望能够编写一个测试来执行事件侦听器回调而不是立即执行fn,但是我不知道在readyState 设置为@ 之前执行我的测试的方法987654325@,我也不知道重新触发DOMContentLoaded 事件的方法。任何建议将不胜感激。

【问题讨论】:

    标签: javascript testing mocha.js karma-runner


    【解决方案1】:

    重新触发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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-09
      • 1970-01-01
      • 2019-12-31
      • 1970-01-01
      • 1970-01-01
      • 2016-07-24
      • 2023-01-22
      相关资源
      最近更新 更多