首页 > 解决方案 > sequlize 托管事务块的模拟

问题描述

技术栈 -> 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.jsexpressjestjssequelize.js

解决方案


您可以尝试实现一个模拟函数sequelize.transaction并在实现中调用一个回调。它看起来像下面这样。

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

推荐阅读