![](/img/trans.png)
[英]Having trouble returning more than one value from a function and assigning the returned values in a promise
[英]Protractor - Having trouble returning values from a promise
我知道我的問題是我的諾言沒有按照我期望的順序執行,但是我是Protractor的新手,並希望這里的人能夠友好地指出我的(可能是簡單的)錯誤。 我有一個構建兩個數組的測試,我想返回這兩個數組,然后在本地設置它們,以便在其他測試中使用它們。 問題是那兩個數組返回未定義。 這是我的第一篇文章,所以請放輕松。 如果我張貼的不正確,請告訴我,我會予以糾正。
這是我在日志中得到的信息:“返回之前索引數組的大小:5” ARRAY.VALUE1:未定義”“ ARRAY.VALUE2:未定義”
以下是相關代碼:
it('Build list of existing downloaded files and parse out index', function(){
myPage.listExistingFiles(fileArray).then(function(array){
console.log("ARRAY.VALUE1: " + typeof(array.value1));
console.log("ARRAY.VALUE2: " + typeof(array.value2));
indexArray = array.value1;
existingFiles = array.value2;
});
});
this.listExistingFiles = function(fileArray){
var deferred = protractor.promise.defer();
var existingFiles = [];
var indexArray = [];
glob(fileArray, function (err, files){
if(err) throw err;
// Build an array of indexes of existing files
if(typeof files !== 'undefined' && files.length > 0){
console.log("Verifying downloads... ");
files.forEach(function (item, index, array){
console.log("item: " + item);
var fileNameArray = item.split(/[-.]/);
// The index in the file name starts at one, so subtract 1 to get true index
var fileIndex = (parseInt(fileNameArray[fileNameArray.length - 2]) - 1);
console.log("fileIndex: " + fileIndex + " type: " + typeof(fileIndex));
indexArray.push(fileIndex);
existingFiles.push(item);
});
}
console.log("Size of Index Array before RETURN: " + indexArray.length);
deferred.fulfill(value1=indexArray, value2=existingFiles);
});
return deferred.promise;
}
您可以創建一個對象並將其附加到deffered.fullfil中:(請使用此代碼反映代碼中的邏輯)這是您可以執行的操作。
angularHomePage.po.js:
var AngularHomepage = function() {
this.listExistingFiles=function(){
var deferred = protractor.promise.defer();
var existingFiles = [];
var indexArray = [];
indexArray.push('fileIndex1');
existingFiles.push('item1');
indexArray.push('fileIndex');
existingFiles.push('item');
obj= {
value1:indexArray,
value2:indexArray
}
console.log("Size of Index Array before RETURN: " + indexArray.length);
deferred.fulfill(obj);
return deferred.promise;
}
}
module.exports = new AngularHomepage()
和您的測試文件:
var angularHomepage =require('./../pageobjects/angularHomePage.po.js');
describe('angularjs homepage', function() {
it('should greet the named user', function() {
angularHomepage.listExistingFiles().then(function(array){
console.log("ARRAY.VALUE1: " + typeof(array.value1));
console.log("ARRAY.VALUE2: " + typeof(array.value2));
indexArray = array.value1;
existingFiles = array.value2;
console.log(indexArray)
});
});
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.