量角器:“无法读取属性”,然后“未定义”
问题描述:
我正在使用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);
});
};
答
deleteRepo
会返回一个承诺只有当request.delete
返回一个承诺 - 这似乎不太可能考虑到它使用回调
为了好玩如下“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);
});
});
};
+0
工作,谢谢! – Tom
显然问题是'deleteRepo'函数返回undefined(或者没有返回语句) - 所以cod 'deleteRepo'是问题实际存在的地方 –
@JaromandaX我试着在deleteRepo()的末尾返回状态码,但仍然得到相同的错误 – Tom
'我试着返回状态码......是的,我可以在我的水晶球中看到你做了什么...不是......显然问题出在'deleteRepo'代码...你如何发布这个消息,以便我们可以告诉你你做错了什么。如果你正在返回一些东西,并且仍然返回undefined,那么你实际上并不**返回任何东西 –