grunt没有在幻像上运行QUnit测试

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测试)...

Mar*_*sen 1

这是因为grunt qunit 注入到页面中的是在 requirejs 加载 qunit 之前放置在那里的。

而且需要在之后。因此,您的测试可能会运行,但 grunt qunit 不知道它,因为它不会返回报告。

我做了一个快速测试,将桥代码放在 qunit 扩展模块的末尾,效果很好。

您可以创建一个 qunit 桥接模块并在您的 qunit 扩展或类似模块中调用它。

官方桥上的代码应该可以正常工作。只需确保它是在 qunit 之后获取的。

Grunt qunit 仍然会注入脚本,但只是失败,因为 QUnit 未定义,但可能不会对您的测试造成任何损害。

  • 那么我们可以做些什么来解决这个问题呢? (4认同)