簡體   English   中英

量角器-難以從承諾中返回價值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM