私はテスト駆動開発を行っています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: Qunit テストが実行されるまで Zombie.js を待機させる方法を教えてください。