单元测试javascript承诺
我的代码通过ajax从服务器获取数据,并使用承诺 如何为该代码编写单元文本单元测试javascript承诺,javascript,promise,Javascript,Promise,我的代码通过ajax从服务器获取数据,并使用承诺 如何为该代码编写单元文本 function getPromise(){ var p = new Promise(function(resolve, reject) { http.get({ host: 'localhost', port: 3000, path: '/blist' }, function(res) { if(res.statusCode < 20
function getPromise(){
var p = new Promise(function(resolve, reject) {
http.get({
host: 'localhost',
port: 3000,
path: '/blist'
}, function(res) {
if(res.statusCode < 200 || res.statusCode>300) {
reject('statusCode=' + res.statusCode);
return;
}
var data="";
res.on('data', function (chunk) {
data += chunk;
resolve(data);
return;
});
res.on('error', function(error) {
console.log("Got error: " + e.message);
reject(error);
});
})
});
return p;
}
函数getPromise(){
var p=新承诺(函数(解析、拒绝){
http.get({
主机:“localhost”,
港口:3000,
路径:'/blist'
},函数(res){
如果(res.statusCode<200 | | res.statusCode>300){
拒绝('statusCode='+res.statusCode);
返回;
}
var数据=”;
res.on('data',函数(块){
数据+=块;
解析(数据);
返回;
});
res.on('error',函数(error){
log(“获取错误:+e.message”);
拒绝(错误);
});
})
});
返回p;
}
您可以使用模拟服务器响应,并通过
您可以使用模拟服务器响应,并通过
我想您应该测试promise函数,如果您伪造http调用,它是否会达到预期效果
这样,您可能会考虑传递HTTP对象和作为参数的回调,这样可以模拟它们并模拟测试中的成功和错误响应。
差不多getPromise(http, req, callback) {
var promise = new Promise((resolve, reject) -> {
http.get(req, callback);
callback.on('data', data -> { // Resolve or reject looking at the status code })
})
return promise;
}
然后你可以模拟你的回调和http#get函数来测试你的场景我想你会想测试promise函数,如果你伪造一个http调用,它是否会达到预期效果
这样,您可能会考虑传递HTTP对象和作为参数的回调,这样可以模拟它们并模拟测试中的成功和错误响应。
差不多getPromise(http, req, callback) {
var promise = new Promise((resolve, reject) -> {
http.get(req, callback);
callback.on('data', data -> { // Resolve or reject looking at the status code })
})
return promise;
}
然后你可以模拟你的回调和http#get函数来测试你的场景你能添加一个更简洁的例子吗?告诉我们你到现在为止都尝试了什么?我创建这个函数来调用getPromise()模块。exports={list:function(req,res){var p=getPromise();p.Then(function(data){res send(data);})。catch(function(err){console.log(err);}}}@flower,在您的单元测试中,您可以模拟$http服务。看看这个文档。您可以添加一个更简洁的示例吗?告诉我们您到目前为止都做了些什么?我创建这个funct是为了调用getPromise()模块。exports={list:function(req,res){var p=getPromise();p(function(data){res.send(data);}).catch(function(err){console.log(err);}}}}@flower,在你的单元测试中,你可以模拟$http服务。看看这个文档。你能解释更多你的意思吗?你能解释更多你的意思吗?