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

时间:2014-10-13 18:42:06

标签: javascript phantomjs hapijs

我正在使用phantomjs-node但不幸的是,它与lab的测试覆盖率不太匹配。当我运行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,我得到“幻影标准输出:ReferenceError:找不到变量:__ $$ labCov”。

有没有办法告诉实验室,“嘿,我知道这一行看起来像代码哟 你想确保自己跑步,但是真的,不要担心这个小功能,这不适合你。“?

或者,有没有办法可以访问__$$labCov,以便我可以将其用于沙盒功能?幻影让你这样做:

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

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

1 个答案:

答案 0 :(得分:2)

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

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