Как я могу запросить базу данных mysql, используя обещания в транспортире?
Я хотел бы выполнять разные запросы несколько раз во время выполнения теста, но моя функция executeSelectQuery выполняется в начале теста, а не в конце. Как я могу преодолеть это, используя обещания?
Мне также нужно получить доступ к объекту внутри executeSelectQuery, и я не могу. Функция возвращает undefined.
Ниже приведен код, как выглядит моя функция 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);
});
Сохранять функции запросов в отдельном блоке "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
});
});
Просто executeSelectQuery()
функцию 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);
})
browser.wait()
в своем запросе, чтобы добавить его в поток управления, либо управляйте выполнением самостоятельно с помощью .then()
. enterUserName.then(() => enterPassword.then(() => query...