我正在使用Node'请求'模块为单元测试发出2个http请求。我必须确保1是在另一个之前执行的,并且我正在尝试使用承诺,但是我得到了错误"无法读取属性'然后'未定义"。下面是发生错误的函数:
this.setupSpec = function () {
var deleteItemsRepo = deleteRepo(strings.editRepo);
deleteItemsRepo.then(function () {
createRepo(strings.editRepo);
}); //todo: this must complete before createRepo starts, npm install async?
//createRepo(strings.editRepo);
return deleteItemsRepo; //return promise
};
deleteRepo(...)和createRepo(...)只是调用http请求的函数。
这是deleteRepo():
var deleteRepo = function (repoName) {
return request.delete(browser.params.baseRestUrl + 'repositories/' + repoName,
{'auth': browser.params.auth}, function (e, r, user) {
console.log("Status code of deleteRepo('" + repoName + "'): " + r.statusCode);
});
};
答案 0 :(得分:1)
deleteRepo
返回Promise时, request.delete
才会返回Promise - 考虑到使用回调,这似乎不太可能
“promisify”deleteRepo
如下有趣和利润
var deleteRepo = function(repoName) {
return new Promise(function(resolve, reject) {
request.delete(browser.params.baseRestUrl + 'repositories/' + repoName, {'auth': browser.params.auth}, function(e, r, user) {
console.log("Status code of deleteRepo('" + repoName + "'): " + r.statusCode);
if(e) {
return reject(e);
}
resolve(r.statusCode);
});
});
};