phantomjs节点+lab(来自hapijs的测试实用程序)+测试覆盖率

phantomjs-node + lab (test utility from hapijs) + test coverage

本文关键字:测试 实用程序 测试覆盖 覆盖率 +lab 节点 来自 hapijs phantomjs      更新时间:2023-09-26

我使用的是phantomjs节点,不幸的是,它与实验室的测试覆盖率不太匹配。当我运行lab -t 100时,它正试图将__$$labCov注入传递给page.evalute()的函数中。但是,该函数不会在其出现的代码上下文中执行。它是在幻影浏览器的上下文中执行的。

所以,在我正在测试的代码中,如果我在PhantomJS代码中有这个:

page.evaluate(
    function () { return 'foo'; }, 
    function (result) {
                // Do something with result here
                ph.exit();
    }
);

在第二个函数中,result应该是字符串"foo"。当我刚运行代码时,就会发生这种情况。但如果我通过lab -t 100运行它,它就是null,我会得到"phantom stdout:ReferenceError:找不到变量:__$$labCov"。

有没有办法告诉实验室,"嘿,我知道这一行看起来像你的代码你想确保运行,但实际上,不要担心这里的这个小函数,它不适合你。"?

或者,有没有一种方法可以访问__$$labCov,使其可用于沙盒函数?幻影让你这样做:

page.evaluate(
    function (__$$labCOv) { return 'foo'; }, 
    function (result) {
                // Do something with result here
                ph.exit();
    },
    __$$labCov
);

但这不起作用,因为我无法访问__$$labCov。。。

lab有一个未记录的小特性,您可以在其中标记代码的一部分以排除覆盖。它由实验室覆盖范围代码本身使用(因为实验室使用实验室来测试实验室)。只需用$lab:coverage:off$$lab:coverage:on$包围代码即可。

https://github.com/hapijs/lab/blob/master/lib/coverage.js#L240-L261