【发布时间】:2016-11-03 13:30:04
【问题描述】:
我有以下使用 Q Promise 库的函数
getConfig: function(params){
return this.codeApiClient.get(this.endpoints.config, params, {}).then(function(response){
return response;
}, function(err){
throw err;
});
}
上面的代码调用了如下所示的API代码(为了去噪,我把代码缩写了)
CodeApiClient.prototype = {
get: function(endpoint, paramStr, headers){
var defer = new Q.defer();
var start_time = new Date().getTime();
var req = new XMLHttpRequest();
var url = endpoint + (paramStr.indexOf('?') !== -1 ? paramStr : '?' + paramStr);
req.open('GET', url);
req.onload = function() {
var request_time = new Date().getTime() - start_time;
// This is called even on 404 etc
if (req.status < 400) {
var response = JSON.parse(req.response)
response.__request_time = request_time;
defer.resolve(response);
} else {
// Otherwise reject with the status text
defer.reject(Error(req.statusText));
}
};
}
我的问题是:如何为 getConfig 编写 Jasmine 测试,即伪造响应并存根底层 XMLHttpRequest ? sinon.js 能做到这一点吗?我知道它可以在 $.ajax 上存根回调,但我不确定如何使用诸如 Q 之类的 Promise 库来执行此操作。请注意,这是纯 JavaScript,没有角度等
【问题讨论】:
标签: javascript jasmine sinon