我正在做测试驱动开发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
ms),但这也无济于事。
Q1:我正在尝试做的事情是否有意义,或者是否有更简单的方法来做类似的事情?
Q2:你知道我怎样才能让 Zombie.js 等待 Qunit 测试运行吗?