2

私はテスト駆動開発を行っていますQunit: 新しい関数を作成するときは、そのためのテストを作成し、関数を作成し、ページをリロードし、すべてのテストに合格したら先に進みます...これは最初はうまく機能しますが、すべてのテストの実行に数秒かかるため、しばらくすると時間のかかるプロセスになり始めます。ブラウザを更新するたびに、その時間を待たなければなりません。

この問題を回避する試みとして、Zombie.jsヘッドレス テストを実行する方法を導入することを考えました。アイデアはZombie.js、ウェブページを継続的にチェックし (例: )、コーディング中に結果を$ watch -n1 "node queryTheWebpage.js"報告することです(たまに、そうでない場合もあります) 。 「本物の」ブラウザの場合、ブラウザを開いてページを手動でチェックして検証します)。QunitsZombie.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オプションを試してみましたが(たとえば、 5000msに設定)、それも役に立ちませんでした。

Q1: 私がやろうとしていることは理にかなっていますか、それとももっと簡単に似たようなことをする方法はありますか?

Q2: Qunit テストが実行されるまで Zombie.js を待機させる方法を教えてください。

4

1 に答える 1

0

それがあなたに役立つかどうかはわかりませんが、これを見てください:http://api.qunitjs.com/QUnit.done/

于 2012-09-21T13:38:07.870 に答える