[英]How to wait for a function to return a value before assigning it to a variable in javascript/mocha
Please look at my Mocha test: 请查看我的Mocha测试:
it.only('verify Lot in CFR List',function(done)){
this.timeout(20000);
var data = ui.cfrVerifyLot(); //calling cfrVerifyLot() method from another file
data.then(function(result) {
console.log(result); // 'getting undefined' 'expecting success or failed'
if(result=='success'){
done();
}
});
}
It seems that ui.cfrVerifyLot() method is assigning returned valued before finishing itself. 似乎ui.cfrVerifyLot()方法在完成自身之前就分配了返回值。 How can make it wait to assign the result before it gets finished completely.
如何让它在完全完成结果之前等待分配结果。
This is my cfrVerifyLot() function: 这是我的cfrVerifyLot()函数:
cfrVerifyLot:function(){
var result = '';
const rest = require('./restAPI');
const puppeteer = require('puppeteer');
const assert = require('chai').assert;
const cfg = require('../config-env.json');
const objR = require('../obj-repo/obj-c.json');
puppeteer.launch({
//headless:false
}).then(async browser => {
/*
making some UI navigations
*/
try{
const innerText = await page.evaluate(() => document.querySelectorAll('some element name')[1].innerText);
var str = innerText.substring(0,8);
await page.waitFor(2*1000);
if(str===input_lot_number){
result = 'success'
}
}
catch(err){
result = 'failed'
}
finally{
await browser.close();
return result
}
});
},
You can use the async
and await
operators. 您可以使用
async
和await
运算符。
it.only('verify Lot in CFR List',async function(done)){
this.timeout(20000);
var result = await ui.cfrVerifyLot();
console.log(result); // 'getting undefined' 'expecting success or failed'
if(result=='success'){
done();
}
});
}
EDIT Your cfrVerifyLot
function returns
no value. 编辑您的
cfrVerifyLot
函数不returns
任何值。 instead the result
is returned from the pupperteer
. 相反,
result
是从pupperteer
返回的。 Change the puperteer's
then chain to use await
so you return the result
value directly from the function. 将操作
puperteer's
then链更改为使用await
以便直接从该函数返回result
值。
cfrVerifyLot:async function(){
var result = '';
const rest = require('./restAPI');
const puppeteer = require('puppeteer');
const assert = require('chai').assert;
const cfg = require('../config-env.json');
const objR = require('../obj-repo/obj-c.json');
let browser = await puppeteer.launch({//headless:false})
/*
making some UI navigations
*/
try{
const innerText = await page.evaluate(() => document.querySelectorAll('some element name')[1].innerText);
var str = innerText.substring(0,8);
await page.waitFor(2*1000);
if(str===input_lot_number){
result = 'success'
}
}
catch(err){
result = 'failed'
}
finally{
await browser.close();
return result
}
},
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.