用僵尸验证Qunit的结果.js



我正在用Qunit进行测试驱动的开发:当创建一个新函数时,我为它编写测试,创建函数,重新加载页面,如果所有测试都通过了,我就继续前进……虽然这在一开始很好用,但过了一段时间,它开始成为一个耗时的过程,因为所有测试都需要几秒钟才能运行,这是我每次刷新浏览器时都要等待的时间。

为了解决这个问题,我考虑引入Zombie.js来执行无头测试:这个想法是让Zombie.js连续检查网页(例如$ watch -n1 "node queryTheWebpage.js"),并在编码时向我报告Qunits的结果(偶尔,由于Zombie.js不是"真正的"浏览器,我会打开浏览器手动检查页面以进行验证)。

到目前为止,以下是我的节点/僵尸代码:

browser.visit("http://localhost/mywebpage.html", function () {
var qunit_tests = browser.query('body');
console.log(qunit_tests.innerHTML);
});

在控制台输出中,我确实看到了Qunit测试容器<ol id="qunit-tests"></ol>,但它是空的,这意味着当调用visit回调函数时,测试还没有运行。

我曾尝试使用wait函数来等待测试运行,但没有成功:

function waitForQunitToEnd(window) {
var last = window.document.querySelector('selectorOfMyLastTest');
var first_failed = window.document.querySelector('li.failed');
return (last || first_failed);
}
browser.visit("http://localhost/mywebpage.html", function () {
browser.wait(waitForQunitToEnd, function() {
var qunit_tests = browser.query('body');
console.log(qunit_tests.innerHTML); // still gives me empty <ol id="qunit-tests"></ol>
});    
});

我试着使用waitFor选项(例如设置为5000毫秒),但这也没有帮助。

Q1:我想做的事情有意义吗?或者有没有更简单的方法来做类似的事情

Q2:你知道我如何让Zombie.js等待Quit测试运行吗

我不知道它是否会对你有所帮助,但看看这个:http://api.qunitjs.com/QUnit.done/

最新更新