【问题标题】:Using Qunit module setUp tearDown to test ajax使用 Qunit 模块 setUp tearDown 测试 ajax
【发布时间】:2015-04-24 06:35:56
【问题描述】:

我发现使用 Qunit 测试 jQuery ajax 非常困难。

尤其是在尝试使用 Qunit 的模块构造和 setUp 和 tearDown 方法来减少重复代码时,我感到很困惑。以下作品:

test("ajax request is 200 OK", function () {
var xhr = sinon.useFakeXMLHttpRequest();
var requests = sinon.requests = [];

xhr.onCreate = function (request) {
    requests.push(request);
};

var callback_success = sinon.spy();
$.ajax('/course/data', { 
    success: callback_success,
});

equal(sinon.requests.length, 1);
equal(sinon.requests[0].url, "/course/data");


requests[0].respond(200, { "Content-Type": "application/json" }, '[]');

ok(callback_success.called);
});

我有一个JSFiddle,它显示测试失败(编号 11)。 (我在尝试了解所有内容时编写的早期测试)。

特别是我的问题是:当我在第 115 行的全局范围内声明 var requests; 时,为什么测试报告失败并显示“请求未定义”?

感谢您的解释! (编辑:由于某种原因,链接的 JSFiddle 显示了 sinon.js 的问题,当我从我的小提琴帐户运行 JSFiddle 时并不明显??)

【问题讨论】:

    标签: ajax qunit sinon


    【解决方案1】:

    在我的JSFiddle 中找到了未定义请求问题的解决方案。我的测试模块的设置函数从未被调用过。出于某种原因,我使用 camelCase 来定义设置和拆卸:

    setUp: function () { .....},
    tearDown: function() {....}
    

    当然应该是简单的

    setup: function () {...},
    teardown: function () {...}
    

    所以,基本上是我的一个区分大小写的错误,再加上我发现 ajax、qunit 和 sinon 非常令人费解。

    【讨论】:

    • 另请注意,在较新版本的 QUnit 中,这些方法已重命名为:beforeEach()afterEach()!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-13
    • 2013-01-05
    • 1970-01-01
    • 1970-01-01
    • 2018-02-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多