programing

프로젝터로 약속을 만들고 조작하는 방법

newsource 2023. 3. 26. 11:26

프로젝터로 약속을 만들고 조작하는 방법

Node Http 모듈을 사용하여 서버를 직접 호출하여 프로젝터 테스트를 설정합니다.Http는 콜백 기반이고 나는 그것을 약속으로 바꾸고 싶다.

예를 들어, 다음 함수가 약속을 반환하도록 하겠습니다.

function callMyApi() {
  var promise = // somehow create promise;

  http.request({path: '/yada/yada', method: 'POST'}, function(resp) {
    promise.complete(resp);
  });

  return promise;
}

는 '한가?' 입니다require()'할 수 약속 만들기' 대신 '약속 만들기'를 하면 어떨까요?

Protractor는 WebDriver의 약속을 사용하여 해당 API를 'Protractor'에서 글로벌하게 공개합니다.그래서 당신은 할 수 있어야 한다.

var deferred = protractor.promise.defer();
return deferred.promise;

WebDriverJS Promise API의 완전한 내용에 대해서는http://https://code.google.com/p/selenium/source/browse/javascript/webdriver/promise.js 에서 코드를 참조해 주세요.

이는 잘못된 방법이지만, 연장기 제어 흐름에 대해 아는 것이 도움이 될 수 있습니다.정기적으로 Javascript를 Protractor 순서로 실행하려면 제어 플로우를 통해 추가합니다.

약속 할 수 .browser.wait당신의 약속이 완성될 때까지 기다립니다.

var Promise = require('bluebird');
var promises = [];
browser.controlFlow().execute(function() {
    var p = new Promise...
    promises.push(p);
});
browser.wait( function(){ return Promise.all(promises); }, timeoutMs );

저는 이걸 일반적인 약속이 아니라console.log을 지정하거나 의 일부에 대한 시간을 지정하거나 심지어 사용하기도 합니다.fs테스트에서 파일로 인쇄합니다.

var startTime, duration; 
browser.controlFlow().execute(function() {
    startTime = new Date().getTime();
});
//Protractor code you want timed
browser.controlFlow().execute(function() {
    duration = new Date().getTime() - startTime;
    console.log("Duration:", duration);
});

언급URL : https://stackoverflow.com/questions/21055400/how-to-create-and-manipulate-promises-in-protractor