7

QUnit を使い始めたばかりで、問題が発生しています。

現在、JavaScript コンパイラである TypeScript を使用しています。メインクラスの構造に対応するクラスにテストがあります。

これらの各クラスには、runTests() という関数があります。

これらのテストを実行するには、ループして「Test」で終わるすべてのクラスを取得し、それらの runTests() 関数を呼び出します。

runTests() 関数の例は次のとおりです。

runTests = function() {
  QUnit.test("5 = 5", function() {
    QUnit.ok(5 == 5, "okay");
  });
}

私はすべての runTests() が機能することを知っています (それらが呼び出され、コンソール出力のために確認されたように)、せいぜい 1 つのテストしか表示されません。常に最後に呼び出されたテストのようです (同じ runTests() に複数のテストがある場合でも)。

QUnit が自分自身をリセットする奇妙なことがあるのですか?

ありがとう。


重要な場合に備えて、私が使用する HTML は次のとおりです。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>QUnit Example</title>
    <link rel="stylesheet" href="qunit-git.css">
</head>
<body>
<div id="qunit"></div>
<script src="qunit-1.10.0.js"></script>
<script src="mycode.js"></script>
<script type="text/javascript">
    function runTest() {
        var testClasses = getClassesRecurse(Test, []);

        function getClassesRecurse(target, testClasses) {
            if (typeof target == 'function' && /Test$/.test(target.name)) {
                testClasses.push(target);
            } else if (typeof target == 'object') {
                for (var i in target) {
                    getClassesRecurse(target[i], testClasses);
                }
            }

            return testClasses;
        }

        for (var i in testClasses) {
            var testObj = new testClasses[i]();

            if (testObj.runTests) {
                console.log('Testing: ' + testClasses[i].name, testObj);
                testObj.runTests();
            }
        }
    }

    runTest();
</script>
</body>
</html>
4

1 に答える 1

16

それで、私自身の質問に答えるために:テストで「再実行」を押したようで、1つのテストだけが表示されていました。クエリ文字列を削除すると、すべてがうまくいきました。

QUnit への提案: 大きなフォントでメッセージを追加してください: 「1 つのテストのみを実行しています。すべて実行するにはここをクリックしてください」=p

于 2012-10-23T22:16:36.460 に答える