簡體   English   中英

grunt沒有在幻像上運行QUnit測試

[英]grunt not running QUnit tests on phantom

我有一個與travis集成的存儲庫 我有QUnit測試,我想從grunt / node服務器端和AMD(requirejs)運行。 這是我的AMD init.js的來源:

(function () {
    require.config({
        baseUrl: "../src"
    });

    require(["../test/suites/basic",
        '../test/qunit-extend',
        'qunit'
    ], function(BasicTests) {
        QUnit.config.autoload = false;
        QUnit.config.autostart = false;
        BasicTests.run();
        QUnit.load();
        QUnit.start();
    });
}());

當我在瀏覽器中運行這些QUnit測試時 - 一切都運行良好。 但是當我嘗試從grunt級別(服務器端使用phantomjs)運行它們時, 它失敗了 我明白了:

Running "qunit:all" (qunit) task
Testing test/index.html 
Warning: PhantomJS timed out, possibly due to a missing QUnit start() call. Use --force to continue.

每時每刻。 我試圖按照本教程中的方式進行evetyrhing,但仍然得到錯誤的結果(幻影被絞死而不是服務QUnit測試)...

我正在使用grunt-contrib-qunit通過grunt運行QUnit測試。 它在內部使用phantomjs。

將grunt-contrib-qunit升級到最新版本(0.7.0)后,我得到了與OP相同的錯誤:

PhantomJS timed out, possibly due to a missing QUnit start() call.

要解決這個問題,我必須首先通過require()加載QUnit,然后執行QUnit.start()並在此之后定義我的所有QUnit模塊和測試。

HTML文件看起來像這樣:

<!DOCTYPE html>
<html>
<head>
    <title>QUnit + RequireJS + PhantomJS</title>
    <link rel="stylesheet" href="lib/qunit/qunit/qunit.css">
</head>
<body>
    <div id="qunit"></div>
    <div id="qunit-fixture"></div>
    <script src="lib/requirejs/require.js"></script>
    <script src="mytests.js"></script>
</body>
</html>

然后是mytests.js文件:

require.config({
    paths: {
        'qunit': 'lib/qunit/qunit/qunit'
    }
});

require(['qunit'], function(QUnit) {

    QUnit.start();

    QUnit.module('My Module');

    QUnit.test('some normal test', function(assert) {

        assert.ok(true, 'can run a normal QUnit test');
    });

    QUnit.test('some asynchronous test', function(assert) {

        var done = assert.async();

        setTimeout(function() {

            assert.ok(true, 'can run an asynchronous QUnit test');
            done();

        }, 50);
    });
});

這是因為是由咕嚕qunit注入的頁面放在那里之前qunit由requirejs加載。

它需要追隨。 所以你的測試可能會運行,但是grunt qunit不知道它,因為它沒有報告。

我做了一個快速測試,將橋代碼放在你的qunit擴展模塊的最后,它工作正常。

您可以創建一個qunit橋接模塊,並在您的qunit擴展或類似中調用它。

官方橋梁的代碼應該可以正常工作。 確保在qunit之后獲取它。

Grunt qunit仍然會注入腳本但是因為QUnit未定義而失敗,但可能不會對您的測試造成任何傷害。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM