Blanket.js覆盖了动态加载的脚本文件

Blanket.js coverage of dynamically loaded script file

本文关键字:脚本 文件 加载 动态 js 覆盖 Blanket      更新时间:2023-09-26

我正在使用Blanket.js来测试代码覆盖率(使用Jasmine,尽管我认为这无关紧要)。我有一些只在需要时加载的脚本。这些是使用jQuery的$.getScript()函数加载的。如何让Blanket.js为动态加载的脚本报告覆盖率?

我尝试通过在头的末尾添加一个带有src的脚本标记来加载脚本(例如,$('<script/>', {src: (javascript path), 'data-cover': 'data-cover'}).appendTo('head');)。

我没有看到任何明显的函数可以在blankt.js源代码中添加脚本。

为了回答我自己的问题,这里有一个函数可以满足我的要求:

function addCoveredScript(url) {
    $('<script/>', {src: url}).appendTo('head');
    blanket.utils.cache[url] = {};
    blanket.utils.attachScript({url:url}, function (content) {
        blanket.instrument({inputFile: content, inputFileName: url},
                           function (instrumented) {
            blanket.utils.cache[url].loaded = true;
            blanket.utils.blanketEval(instrumented);
            blanket.requiringFile(url, true);
        });
   });
}

我不知道是否有更简单的方法可以做到这一点,但它有效。