茉莉花单元测试没有在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,它将启动一个包含测试的服务器,并使用幻影加载该页面,并等待所有规格完成并将故障输出到命令行。