duc*_*cin 6 javascript qunit phantomjs gruntjs
我有一个与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();
});
}());
Run Code Online (Sandbox Code Playgroud)
当我在浏览器中运行这些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.
Run Code Online (Sandbox Code Playgroud)
每时每刻.我尝试按照本教程中的方式进行evetyrhing ,但仍然得到错误的结果(幻影被吊死而不是服务QUnit测试)...
这是因为grunt qunit 注入到页面中的桥是在 requirejs 加载 qunit 之前放置在那里的。
而且需要在之后。因此,您的测试可能会运行,但 grunt qunit 不知道它,因为它不会返回报告。
我做了一个快速测试,将桥代码放在 qunit 扩展模块的末尾,效果很好。
您可以创建一个 qunit 桥接模块并在您的 qunit 扩展或类似模块中调用它。
官方桥上的代码应该可以正常工作。只需确保它是在 qunit 之后获取的。
Grunt qunit 仍然会注入脚本,但只是失败,因为 QUnit 未定义,但可能不会对您的测试造成任何损害。