[英]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.