TL; DR:Karma是否篡改运行测试时发送的ajax请求?Ajax:使用Karma时的空json响应
语境
我目前正在写单元测试的前端JavaScript应用。我正在使用Karma 0.12.31来运行测试,我使用的与此问题相关的唯一前端库是jQuery。
我有一个非常简单的类对象负责从后端API获取和缓存结果:
function APIReader(baseUrl) {
this.baseUrl = baseUrl;
this.cache = {};
}
APIReader.prototype.updateCache = function(uuid) {
var that = this;
$.ajax({
url : this.baseUrl+uuid,
dataType : 'json',
async : false,
success : function (data) {
that.cache[uuid] = data;
},
error : function(jqxhr, status, err) {
that.cache[uuid] = undefined;
}
});
};
APIReader.prototype.get = function(uuid) {
if (!(uuid in this.cache)) this.updateCache(uuid);
return this.cache[uuid];
};
下面的代码片段就像开发服务器上的魅力:
var ar = new APIReader('http://server/api/endpoint/');
console.log(ar.get('18fc7dc1-7698-4b8e-900e-8262c1393067'));
问题
但是,当使用Karma进行测试时,请说:
it('should work', function() {
var ar = new APIReader('http://server/api/endpoint/');
expect(ar.get('some-uuid')).toEqual({
... some object ...
});
});
我收到此错误:1) Expected null to be Object({ ... some object ... }).
。
我已经看了一会儿,似乎浏览器(Firefox 35)收到的ajax响应的主体是空的。
我敢肯定的API(与django和django-rest-framework书面)的作品以及httpie给出正确的(非enpty)结果相同的终点。
其实我已经尽可能以重现Firefox使用使用卷曲完全相同的头不见了:
该返回正确的结果也是如此。
总结
- 我很有信心的API运作良好
- 我相信了
APIReader
片段效果很好(有没有什么给它,它给在开发中正确的结果) - 我假设 Karma篡改ajax请求(擦拭身体或其他东西)的东西,但他们的website没有太多的文档可用,我找不到这样的东西。
关于发生了什么的一切线索?