茉莉花单元测试没有在phantomjs脚本中执行
问题描述:
我写了一个小脚本,它从磁盘加载我的SpecRunner.html(茉莉花单元测试)。 虽然一切都很好,但测试不会执行。 这里是我的代码:茉莉花单元测试没有在phantomjs脚本中执行
var page = require('webpage').create()
, file = "./SpecRunnerCoverage.html" ;
page.open(file, function (status) {
var json = page.evaluate(function() {
return window._yuitest_coverage;
});
console.log(JSON.stringify(json));
phantom.exit();
});
它执行如下:
$> phantomjs myScript
从代码覆盖率数据,我可以告诉被执行没有测试。无论如何,我可以执行这些测试吗?
非常感谢
更新:我刚刚注意到,当我环绕评估功能的setTimeout和延迟整个过程中,它的工作原理。有没有比setTimeout更好的解决方案?
答
当调用window.onload
时,茉莉花启动过程开始运行测试,因此在幻像页加载回调被调用时,您的规格不一定会完成。通过使用setTimeout
,您可以让页面加载后让测试在浏览器中运行。 setTimeout
仍然很脆弱,因为随着您添加更多规格,运行整个套件所花费的时间将会改变,您当前的超时时间可能不够长,无法让套件完成。
如果您的项目可能有ruby依赖项,您可以使用jasmine ruby gem。该gem包含一个rake任务rake jasmine:ci
,它将启动一个包含测试的服务器,并使用幻影加载该页面,并等待所有规格完成并将故障输出到命令行。