我正在尝试使用 QUnit 和 jQuery Mockjax 测试一些与 AJAX 相关的代码,并且遇到了一个问题,即null
当请求 contentType 被修改时,Mockjax 似乎总是返回。
工作的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 来演示这个问题。
我究竟做错了什么?或者这是一个错误,还是 JS 库之间的不兼容?
我正在使用 jquery 1.7.2、mockjax 1.5.3 和 QUnit 1.14.0。在 Chrome 和 Firefox 中观察到相同的行为。
注意:当然,在我的生产代码中,我也会在请求中发送 JSON 编码的数据,但出于演示的目的,我已将问题减少到我认为重现我的问题所需的最低限度。