0

我开始使用 qunit 和 mockjax 为我的 javascript 代码编写一些单元测试。我遵循存储库原则来检索我的数据。在每个存储库中都有一些对 url 的 ajax 调用,它们返回一些 json 数据。

在我的单元测试中,我想使用 mockjax 伪造这些调用。当我为具有测试 json 数据的文件指定代理时,一切正常,但是当我在 mockjax 的响应属性上指定内联 json 日期时,我得到一个错误(readystate 0)。

看我的测试:

asyncTest('getAll03', function () {

    var id = $.mockjax({
        url: 'myurl',
        contentType: 'text/json',
        response: function (settings) {
            this.responseText = { test: "123" }; // my test data
            start(); // needed because otherwise the test will keep running on and on
        }

    });

    // The actual call
    personRepository.getAll({
        ready: function (persons) {
            console.log(persons);

            equal(2, 5, "..."); // temp equal to see if test is working.
            start(); // Start validation
        }
    });

});

如果我在生产代码中记录 mockjax 调用的响应,我会看到它以 ajax 错误处理方法结束。我确实包含我的测试数据,但状态文本“错误”和 readyState '0'。

有什么帮助吗?

4

1 回答 1

0

找到了答案。

事实证明,将内容类型定义为 mockjax 的全局设置是罪魁祸首。删除此设置解决了问题。我不确定,但这似乎是 mockjax 库中的一个错误。就像我说的,当您在 mockjax 对象上定义代理时,这不是问题。只有当您定义内联响应时,它似乎只会导致 readystate 0。

于 2012-01-24T14:22:00.407 回答