2016-06-06 4 views
1

nightwatch에서 테스트를하고 globals.js 파일을 가지고 있는데이 파일은 말 그대로 js 객체를 내보내는 파일입니다.nightwatch js에서 global.js로 작업

var self = module.exports = { 
    environment: undefined, 
    beforeEach: function (browser, done) { 
     browser.execute(function(data) { 
      return window.navigator.userAgent; 
     }, [], function(result) { 
      self.environment = result.value; 
      console.log("Run against: " + self.environment); 
      done(); 
     }); 
     console.log('the new env is', self.environment); 
    }, 
}; 

참고 : console.log("Run against: " + self.environment);이 경우 정의되지되지 내 ENV 값을 출력합니다. 하나. 언제 내가 다른 파일/클래스에서 환경에 액세스하려고합니다. 이전에 업데이트 한 사실에도 불구하고 기본값은 정의되지 않은 값을 반환합니다. 예제는 아래 테스트에서 나온 것입니다.

module.exports = { 
    tags: ['assetindex'], 
    'visit': function(browser) { 

     console.log('the environment is', browser.globals.environment); 
     (/Chrome/.test(browser.globals.environment)) ? 
      browser 
       .page.assetindex().mobileVisit() 
       .end() 
     : 
      browser 
       .page.assetindex().desktopVisit() 
       .end() 
    } 
}; 

browser.globals.environment는 항상 내가 내 beforeEach 기능에 변경 사실에도 불구하고 여기에 정의되지 않은 반환. 제발 어떻게 이것을 달성합니까? 내가 도대체 ​​뭘 잘못하고있는 겁니까 ?

답변

1

browser.globalsglobals.js입니다. 나는 beforeEachbrowser.globals.environmentself.environment을 대체 할 것이다 :

module.exports = { 
    environment: undefined, 

    beforeEach: function (browser, done) { 
     browser.execute(function(data) { 
      return window.navigator.userAgent; 
     }, [], function(result) { 
      browser.globals.environment = result.value; 
      console.log("Run against: " + browser.globals.environment); 
      done(); 
     }); 
    } 
}; 
+0

B를. '전에'가 아닌 '전에'에서 이것을 달성 할 수있는 방법이 있을까요? 나는 똑같은 테스트를 항상 반복 할 필요가없고 단지 전에 건너 뛸 수 있다는 것을 알아 차렸다. 다른 매개 변수를 받기 전에 브라우저가 하나가 아니라는 것을 알았습니다. 제발 전에 그걸 어떻게 할 수 있니? 어떤 도움을 주시면 감사하겠습니다. –

+0

전에 각기 전에 할 수 있는지 잘 모르겠다. 'environment'가 이미 정의되어 있다면'beforeEach'에서'browser.execute'를 건너 뛸 수 있습니다. –

+0

ic, 건너 뛰기로 예를 들어 주시겠습니까? null을 반환하거나 if 블록에 browser.exec을 넣을까요? –

관련 문제