我正在尝试构建一个 Qunit 测试来测试一个 ajax 后调用。我正在使用 mockajax 来模拟呼叫。但是,我无法让测试与异步调用一起工作。
这是我的源代码:
源代码:
ajaxFunc = function(element){
$.post({
type:'POST',
url: '/temp/',
dataType:'json',
success: function(data){
element.text("changed in func");
},
error: function(data){
//do something
},
timeout: 60000
});
}
syncFun = function(element){
element.text("changed in func");
}
这是我的测试代码:
测试2.js
function mockSuccess(){
$.mockjax({
url: "/temp/",
responseText: { success: true }
});
}
QUnit.test( "test ajax async", function( assert ) {
mockSuccess();
var done = assert.async();
var element = document.createElement("div");
ajaxFunc($(element));
$(element).text("old");
setTimeout(function() {
assert.strictEqual($(element).text(), 'changed in func');
done();
});
});
QUnit.test( "test sync", function( assert ) {
var element = document.createElement("div");
$(element).text("old");
syncFun($(element));
assert.strictEqual($(element).text(), 'changed in func');
});
第一次测试失败,第二次成功。如果我在成功回调中的 source.js 中添加注释,我实际上会看到帖子成功并更改了元素文本。
换句话说,除了测试帖子的结果之外,一切正常。
我查看了https://qunitjs.com/cookbook/和堆栈溢出的示例,但没有运气。