每次测试后,Node.js和Mocha单元测试回滚事务

时间:2019-10-15 00:06:56

标签: node.js sql-server database transactions mocha

我正在使用node v10.16.0和npm软件包mssql 5.1.0mocha 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.

我不知道怎么做

  1. 开始交易(在before处理程序中)
  2. 执行sql查询(例如在测试中插入记录),
  3. 回滚事务(在after处理程序中)

0 个答案:

没有答案