黄瓜等待承诺完成

Cucumber wait for promise to finish

我在使用 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"}'}});
    };

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

要让 Cucumber.js 等待承诺得到解决,您必须 return 它作为步骤定义的结果。所以你需要在transactionIdPromise.getBody...

之前放一个return