Я использую node v10.16.0
и пакеты npm mssql 5.1.0
и mocha 6.2.1
. Что я хочу сделать, так это написать вспомогательный класс модульного теста sql (ES6), который обрабатывает транзакции и выполняет откат после каждого модульного теста.
db.js
const mssql = require("mssql");
const config = require("./config");
class DbAccess{
constructor(){
this.connection = new mssql.ConnectionPool(config.dbConfig);
this.connection.connect(err => {
// ...
})
this.transaction = new mssql.Transaction(this.connection);
}
beginTransaction(){
this.transaction.begin();
}
rollbackTransaction(){
this.transaction.rollback();
}
executeSql (sql, callback) {
this.connection.connect().then(() => {
var req = new mssql.Request(conn);
req.query(sql).then((recordset) => {
callback(recordset);
})
.catch ((err) => {
console.log(err);
logger.error(err);
callback(null, err);
});})
.catch ((err) => {
console.log(err);
logger.error(err);
callback(null, err);
});
}
}
test.js
before(() => {
dbAccess.beginTransaction();
});
after(() => {
dbAccess.rollbackTransaction();
});
describe('Test',function(){
describe('SelectAll()', function(){
it('returns all',function(){
dbAccess.insertrecords();
});
});
});
Эта установка не работает, так как я получаю UnhandledPromiseRejectionWarning: ConnectionError: Connection not yet open.
Я не могу понять, как
- Начать транзакцию (в обработчике before),
- Выполнить sql запросы (в тесте, например, вставляя записи),
- Откатить транзакцию (в обработчике after))