2016-11-30 7 views
1

오른쪽. 수출하고자하는 전역 변수가 있으므로 다음 스펙에서 값을 사용할 수 있습니다. 그러나 각도기가 동 기적으로 작동하지 않기 때문에 변수가 올바른 값으로 업데이트되기 전에 내보내기가 수행됩니다. 액션은 플레이어가 생성되고 사용자 이름이 필요하도록 버튼을 클릭하는 것입니다. Console.log에 올바른 값이 포함되어 있으며 내보내기는 필요한대로 수행됩니다. 단, 하드 코드 된 값을 내보내거나 globalUsername = ""으로 설정하면 정의되지 않습니다. 누구나이 내보내기를 sinchronized로 만드는 방법을 도울 수 있으므로 모든 설명이 완료되거나 업데이트 할 변수가 나올 때까지 기다릴 것입니다. 당신이 해결하기 위해 약속을 기다릴 필요가 있기 때문에각도가없는 페이지의 각도기로 전역 변수 업데이트

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 문을 만드는 대신 하나의 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

그래서이 해결 내 문제, ...로 글로벌 브라우저 객체에 추가 할 수 있습니다 잘못된 태그가있는 Google. 이것은 맨 아래에있는 첫 번째 설명 외부에 있습니다.

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