【问题标题】:Mocking of Managed Transaction block of sequlizesequelize 托管事务块的模拟
【发布时间】:2020-09-10 13:23:31
【问题描述】:

技术栈 -> Typescript、Express Js、Sequlize typescript、Jest。

我正在使用 jest 为我的项目编写单元测试用例。但我被困在如何模拟 sequlize 的托管事务。

await SequlizeConnection.sequelize.transaction(async (t) => {});

为了初始化数据库,我创建了一个具有 sequelize 属性的类 SequlizeConnection。

export default class SequlizeConnection {
  public static sequelize: any; 

 public static createConnection() {
  this.sequelize = new Sequelize({
   //initializing the database here
  })
}

我尝试使用以下命令进行模拟,但没有成功。

SequlizeConnection.sequelize = jest.fn()
SequlizeConnection.sequelize.transaction = jest.fn();

如果我使用上面的代码,那么事务块中的所有代码都不会被执行。

【问题讨论】:

    标签: node.js express jestjs sequelize.js


    【解决方案1】:

    您可以尝试对sequelize.transaction 实现一个模拟函数,并在实现中调用一个回调。如下所示。

    SequelizeConnection.sequelize.transaction = jest.fn().mockImplementation((transactionCallback) => {
        transactionCallback();
    })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-08
      • 2015-10-06
      • 2021-02-27
      • 1970-01-01
      • 1970-01-01
      • 2012-05-11
      • 2020-09-19
      • 1970-01-01
      相关资源
      最近更新 更多