У меня есть такая функция:
static async performDatabaseConnectivityHealthCheck(logger) {
let con;
let ret;
try {
con = mysql.createConnection({
host: config.db.host,
user: config.db.user,
password: config.db.password,
database: config.db.db,
});
const { retData } = await sqlFileReader.read('./src/database/sql/healthcheck.sql', [config.db.db], con, logger);
// Do something with retData.....
}
catch (error) {
logger.error(error.message);
throw error;
}
finally {
if (con) {
con.end();
}
}
return ret;
}
И такой тест:
it('throws a \'Database Healthcheck Error\' error when the Database Healthcheck gives the wrong data', async () => {
//Some irrelevant details here including providing rars for rars.logger in the following...
sandbox.stub(sqlFileReader, 'read').returns(Promise.reject(new Error("ER_PROCACCESS_DENIED_ERROR: execute command denied to user 'dchambers'@'%' for routine 'uk_txtloan.connection_ids'")));
expect(async () => {
await RiskAffordabilityReportService.performDatabaseConnectivityHealthCheck(rars.logger);
}).to.throw('ER_PROCACCESS_DENIED_ERROR: execute command denied to user \'dchambers\'@\'%\' for routine \'uk_txtloan.connection_ids\'');
});
У меня две проблемы.Во-первых, строка sandbox.stub
выдает следующее предупреждение, которое меня смущает, поскольку я прошу отклонить Обещание!
UnhandledPromiseRejectionWarning: Error: ER_PROCACCESS_DENIED_ERROR: execute command denied to user 'dchambers'@'%' for routine 'uk_txtloan.connection_ids'
Во-вторых, тест не проходит:
AssertionError: expected [Function] to throw an error
.
Меня больше всего интересует предупреждение.Я попробовал следующий синтаксис, и они дают ту же ошибку:
sandbox.stub(sqlFileReader, 'read').throws(new Error("ER_PROCACCESS_DENIED_ERROR: execute command denied to user 'dchambers'@'%' for routine 'uk_txtloan.connection_ids'"));
sandbox.stub(sqlFileReader, 'read').resolves(Promise.reject(new Error("ER_PROCACCESS_DENIED_ERROR: execute command denied to user 'dchambers'@'%' for routine 'uk_txtloan.connection_ids'")));
sandbox.stub(sqlFileReader, 'read').rejects(new Error("ER_PROCACCESS_DENIED_ERROR: execute command denied to user 'dchambers'@'%' for routine 'uk_txtloan.connection_ids'"));
Что такое правильноеспособ устранить предупреждение?Бонус: пройдите тест.