【问题标题】:Grunt did not run qunit test with ajax callsGrunt 没有使用 ajax 调用运行 qunit 测试
【发布时间】:2017-02-25 10:08:33
【问题描述】:

我创建了 QUnit 测试以确保我的 JSON 通过 AJAX 正确加载并解析为数组,它在浏览器中一切正常,但是当我通过 Grunt 运行它时出现错误:

Running "qunit:files" (qunit) task
Testing test/index.html ...
>> PhantomJS timed out, possibly due to:
>> - QUnit is not loaded correctly.
>> - A missing QUnit start() call.
>> - Or, a misconfiguration of this task.
Warning: 1 tests completed with 1 failed, 0 skipped, and 0 todo.
0 assertions (in 0ms), passed: 0, failed: 0 Use --force to continue.

Aborted due to warnings.

这是我的测试:

QUnit.test("TSO json loader test", function (assert) {

    assert.expect(2);
    var done = assert.async();
    var done1 = assert.async();

    var tsoGrid = new TsoGrid(".testCont");
    tsoGrid.loadJsonDataArray("/test/ajax.json", {}, function (jsonResult) {
        assert.ok(jsonResult[0][0] === "Lorem ipsum", 'ajaxImportFromJson');
        done();
        var jsonRes = jsonResult.importFromJsonArray();

        var resArray = [["Lorem ipsum"],
            ["Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante."],
            [
                [["Lorem ipsum dolor sit amet, consectetuer adipiscing elit."],
                    ["Aliquam tincidunt mauris eu risus.", "Aliquam tincidunt mauris eu risus.1", "Aliquam tincidunt mauris eu risus.2"],
                    ["Vestibulum auctor dapibus neque."]]
            ]];
        assert.ok(jsonRes.isEquals(resArray), 'AjaxImportFromJsonArray');
        done1();
    });

});

我尝试用谷歌搜索,但在 QUnit 移至 async() 并停止使用 start() 和 stop() 之后,所有答案都已过时:(

我发现问题,这里解决方案:

我从站点根目录设置了查询 URL,当我删除它时,设置为文件本身,现在它通过了 grunt 的测试!

所以我们需要把字符串改成这样:

tsoGrid.loadJsonDataArray("ajax.json", {}, function (jsonResult) {

从路径中删除/test/

【问题讨论】:

  • 你为什么有donedone1?你不应该两者都需要。
  • @jakerella 因为如果我这样做,我会在浏览器中收到错误:assert.async 回调@ 28 毫秒的调用太多来源:@tso/test/test.js:137:9</code>
  • 什么?不......你只需要一个......最后一个。
  • @jakerella 好吧,反正也没用,grunt 还是会出错
  • @jakerella 感谢有关done() 的建议,我找到了解决方案并更新了我的问题

标签: jquery json ajax gruntjs qunit


【解决方案1】:

我发现问题,这里解决方案:

我设置了从站点根目录查询的 URL,但它必须是本地路径!

所以你需要更改本地文件的路径,我的情况是它与测试文件存储在同一个文件夹中。

这是工作测试:

QUnit.test("TSO json loader test", function (assert) {

    assert.expect(2);
    var done = assert.async();

    var tsoGrid = new TsoGrid(".testCont");
    tsoGrid.loadJsonDataArray("ajax.json", {}, function (jsonResult) {
        assert.ok(jsonResult[0][0] === "Lorem ipsum", 'ajaxImportFromJson');
        var jsonRes = jsonResult.importFromJsonArray();

        var resArray = [["Lorem ipsum"],
            ["Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante."],
            [
                [["Lorem ipsum dolor sit amet, consectetuer adipiscing elit."],
                    ["Aliquam tincidunt mauris eu risus.", "Aliquam tincidunt mauris eu risus.1", "Aliquam tincidunt mauris eu risus.2"],
                    ["Vestibulum auctor dapibus neque."]]
            ]];
        assert.ok(jsonRes.isEquals(resArray), 'AjaxImportFromJsonArray');
        done();
    });

});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-27
    • 1970-01-01
    • 2013-04-20
    • 2013-08-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多