[英]How do I query mysql database by using promises in protractor
如何在量角器中使用Promise查询mysql数据库?
我想在测试执行期间多次执行不同的查询,但是我的executeSelectQuery函数在测试的开始而不是结束时执行。 我如何通过使用诺言来克服这一问题?
我还需要访问executeSelectQuery内部的对象,但我无法访问。 函数返回未定义。
下面的代码是我的executeSelectQuery函数的外观:
function executeSelectQuery(sql){
connectDatabase.connection.query(sql, function(err, data) {
var result;
if (err) {
throw new Error('[ FAIL ] - Unsuccessful query execution!!!');
}
else{
result = data[0].user;
log.info('[ SUCCESS ] - Query executed successfully: ' + sql + ' with the following result ==> ' + result);
return result;
}
});
}
这是我的测试结果:
it('Should navigate to webpage..', function(){
log.info("Test is being executed..");
login.goTo(parameters.url);
login.login(parameters.username, parameters.password);
helper.executeSelectQuery(query_select);
});
只需使您的executeSelectQuery()
函数返回一个可以解决数据的承诺即可。
executeSelectQuery = (sql) => {
return new Promise((resolve, reject) => {
connectDatabase.connection.query(sql, (err, data) => {
if(err) {
reject(err);
}
resolve(data);
});
});
}
然后在测试中解决它
executeSelectQuery().then((data) => {
console.log(data);
})
保持查询函数在last中的单独“ it”块中调用 。
describe('Overall Test Suite',function() {
var expectedResult; //global variable for all 'it' blocks inside suite.
it('Should navigate to webpage..', function(){
log.info("Test is being executed..");
login.goTo(parameters.url);
login.login(parameters.username, parameters.password);
});
it('Executing Queries', function(){
expect(helper.executeSelectQuery(query_select)).toBeEqual(expectedResult);//let jasmine resolve the promise implicitly
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.