我正在尝试使用QUnit和jQuery Mockjax测试一些与AJAX相关的代码,并且遇到了一个问题,即当修改请求contentType时,Mockjax似乎总是返回null
。
正在运行的JS代码:
QUnit.asyncTest('$.ajax POST', function() {
expect(1);
$.mockjax({
url: '/test',
type: 'POST',
responseText: {
foo: 'bar'
}
});
$.ajax({
url: '/test',
type: 'POST',
})
.done( function(data,textStatus,jqXHR) {
deepEqual(data,{foo:'bar'},'Correct response');
QUnit.start();
});
});
但是,如果我在$.ajax
请求中设置内容类型:
$.ajax({
url: '/test',
type: 'POST',
contentType: 'application/json',
})
测试失败:
Expected:
{
"foo": "bar"
}
Result:
null
我有一个jsfiddle here来证明这个问题。
我做错了什么?或者这是一个错误,还是JS库之间的不兼容?
我使用的是jquery 1.7.2,mockjax 1.5.3和QUnit 1.14.0。在Chrome和Firefox中也会出现相同的行为。
注意:当然,在我的生产代码中,我也会在请求中发送JSON编码的数据,但出于演示的目的,我已将问题简化为我认为的问题是重现我的问题所必需的最低限度。
答案 0 :(得分:3)
将dataType:'json'添加到$ .ajax调用有助于:
$.ajax({
url: '/test',
type: 'POST',
dataType: 'json',
contentType: 'application/json',
})
......但我不知道为什么......