黄瓜等待承诺完成

时间:2017-10-25 13:09:50

标签: node.js cucumber nightwatch.js

我在使用Cucumber和Nightwatch.js时遇到了麻烦。在我的一个功能中,在第一步我发出POST请求以获取id,然后我将该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"}'}});
    };

我的问题是如何在进入下一步之前等待请求完成?

1 个答案:

答案 0 :(得分:1)

要使Cucumber.js等待承诺得到解决,您必须将其作为步骤定义的结果返回。因此,您需要在return

之前加transactionIdPromise.getBody...