2016-11-30 93 views
1

與之相對。我有一個我想導出的全局變量,所以我可以在以下規格中使用該值。但由於量角器不同步工作,所以在變量更新到正確的值之前進行導出。 該動作是一個點擊按鈕,其中玩家被創建,我需要輸出用戶名。 Console.log包含正確的值,並且導出也是應該的,只是它導出硬編碼的值或者未定義的,如果我設置globalUsername =「」; 任何人都可以幫助如何使這個出口同步,所以它會等待所有描述完成或變量得到更新。使用量角器在非角頁面上更新全局變量

describe ("Quick add player", function() { 

    it ("New player is created and credentials are displayed", function() { 
     browser.ignoreSynchronization = true; 

     var playerData1 = playerData.getText().then(function(text) { 
      console.log("1: ", text); 
      return text.split("\n")[0]; 
      //console.log(text.split(" ")[1]); 
     }); 


     var globalUsername = "1234"; 

     playerData1.then(function(text) { 
      globalUsername = text.split(" ")[1]; 
      //expect(globalUsername).not.toEqual(""); 
      console.log("*****************\n" + globalUsername);  
     }); 
    }); 
}); 
module.exports = globalUsername; 

回答

1

因爲您使用瀏覽器忽略同步,您的測試可能會嵌套然後語句,因爲您需要等待承諾解決。與其創建多個then語句,您可以將它們放入單個語句中。此外,您可以將您的變量綁定到全局命名空間與global.username = username或將其與browser.username = username

describe ("Quick add player", function() { 

    it ("New player is created and credentials are displayed", function() { 
    browser.ignoreSynchronization = true; 
    global.username = "1234"; 
    playerData.getText().then(function(text) { 
     console.log("1: ", text); 
     global.username = text.split("\n")[0].split(" ")[1]; 
     console.log("*****************\n" + global.username); 
    }); 
    }); 
}); 

// access using global.username tied to the global namespace 
// instead of var username = require('thisfile'); 
1

因此,這解決了我的問題,其中我出口的字符串,而不是變量....搜索添加到全球瀏覽器對象谷歌與錯誤的標籤。 這是放置在底部的第一個描述之外。

module.exports = { 
exportUsername: function() { 
    return globalUsername; 
} 
};