我正在使用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
...
答案 0 :(得分:2)
实验室有一些未记录的功能,您可以在其中标记代码的一部分以进行覆盖率排除。它由实验室覆盖代码本身使用(因为实验室使用实验室来测试实验室)。只需使用$lab:coverage:off$
和$lab:coverage:on$
包围您的代码。
https://github.com/hapijs/lab/blob/master/lib/coverage.js#L240-L261