我有以下代码,发生的事情是,一旦承诺得到解决,浏览器就不会导航到url,它只停留在nightwatch.conf.js上定义的默认页面上。所以测试失败了。
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);
return transactionIdPromise.getBody('utf8').then(JSON.parse).done(function (result) {
var id = result.transaction_id;
var url = "https://mywebpage.com:8443/" + id;
client.url(url)
});
});
答案 0 :(得分:0)
你必须正确地链接承诺。由于client.url
是一个异步操作,它返回一个promise。你必须返回它才能使Cucumber.js运行器等待整个承诺链解决,然后再进行下一步。
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);
return transactionIdPromise.getBody('utf8').then(JSON.parse).then((result) => {
var id = result.transaction_id;
var url = "https://mywebpage.com:8443/" + id;
return client.url(url)
});
});
答案 1 :(得分:0)
我的解决方案是改变已完成的承诺,即使我仍然不确定为什么这样做。