量角器:"无法读取属性'然后'未定义"

时间:2017-02-14 21:58:58

标签: request promise protractor

我正在使用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);
        });
};

1 个答案:

答案 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);
        });
    });
};