黄瓜等待承诺完成
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
我在使用 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