【发布时间】:2018-08-10 17:43:28
【问题描述】:
我需要一些帮助...我正在使用第 3 方方法,其中包含回调...所以现在如果我想在 WDIO 中使用它,我需要将该方法包装在 promise 中...所以我做到了以下:
post(env, userAccount, canonical, isItQuery){
let options = { ..... };
return new Promise(function(resolve, reject){
request.post(options,function(error, response){
logger.info('In to the callback of request post');
if(!error){
resolve(response);
}
else{
reject(error);
}
});
});
}
我尝试在 stepDefinition 中像这样调用这个方法:
rm.post(env,userAccountID,payloadName,true).then(function(resp) {
console.log('Response: ' + resp);
})
.catch(function(error){
console.log("ERROR: " + error);
})
在执行过程中,脚本不等待来自request.post 方法的响应...并且在没有响应的情况下执行完成...请帮助我如何使这项工作...
我尝试使用返回promise 的request-promise npm-module 进行相同的操作,而不是进行回调并遇到相同的问题:
这里是示例代码:
import {defineSupportCode} from 'cucumber';
import request from 'request-promise';
import config from 'config';
import fs from 'fs';
require('request-promise').debug = true;
defineSupportCode(function({Given, When, Then}){
Given(/^Run the "([^"]*)" with user_session of "([^"]*)"$/, (canonical, user_session) => {
.......
.......
const payload = fs.readFileSync(path,{encoding:'utf8'});
let options = {
...........
...........
};
request(options)
.then(function ($) {
console.log($);
})
.catch(function (err) {
console.log('error');
});
});
});
我正在使用带有sync:true 的 wdioRunner。我正在使用黄瓜框架。
谢谢!!
【问题讨论】:
标签: webdriver-io