2017-10-25 1 views
0

나는 오이와 Nightwatch.js에 문제가있다. 내 기능 중 하나에서 첫 번째 단계에서 ID를 얻기 위해 POST 요청을 한 다음 해당 ID를 탐색해야하는 URL에 사용합니다. 내가 가지고있는 문제는 내가 다른 단계에서 응답을 얻는 순간에 테스트가 실패했기 때문에 내가 그것을 보려고하는 아이템이 거기에 있지 않기 때문이다. 다음은 제가 취한 조치의 발췌입니다.오이는 약속을 끝내기를 기다린다.

Given(/^I make a post request and retreive the Id i got the page + id$/,() => { 
    //I make the post request 
    var transactionIdPromise = utils.getTransactionId(1); 
    var url = ""; 

    transactionIdPromise.getBody('utf8').then(JSON.parse).done(function (result) { 
     var id = result.transaction_id; 
     url = "https://mywebpage.com:8443/" + id; 
     return client.url(url) 
    }); 
}); 

//request that returns id 
var getTransactionId = function (user) { 
     return request('POST', 'http://localhost:8888/internal/retreive_transaction/?', {json: {user_id: user, type: 'UNIQUENESS', info: '{"person_id":"xxxxxxxxxxxxxxxx"}'}}); 
    }; 

제 질문은 어떻게하면 다음 단계로 이동하기 전에 요청이 완료 될 때까지 기다릴 수 있습니까?

답변

0

Cucumber.js가 약속이 해결 될 때까지 기다리려면 단계 정의의 결과로 반환해야합니다. 따라서 return 앞에 transactionIdPromise.getBody...

+0

을 입력해야합니다. 하지만 지금은 내 client.url이 페이지를 중간에 탐색하지 않는다는 것입니다. – elcharrua

관련 문제