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;
4

2 回答 2

1

所以这解决了我的问题,我导出一个字符串而不是变量....用错误的标签搜索谷歌。这位于底部的第一个描述之外。

module.exports = {
 exportUsername: function () {
  return globalUsername;
 }
};
于 2016-12-01T10:02:57.530 回答
1

因为您使用的是浏览器忽略同步,所以您的测试可能会嵌套 then 语句,因为您需要等待 Promise 解决。您可以将它们放入单个 then 语句中,而不是创建多个 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');
于 2016-12-01T09:06:50.570 回答