node.js - 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();
如果我使用上面的代码,那么事务块中的所有代码都不会被执行。
解决方案
您可以尝试实现一个模拟函数sequelize.transaction
并在实现中调用一个回调。它看起来像下面这样。
SequelizeConnection.sequelize.transaction = jest.fn().mockImplementation((transactionCallback) => {
transactionCallback();
})
推荐阅读
- ios - 如何将属性作为方法参数传递,然后在 Objective-C 的块中将其设置为 nil?
- scala - 如何在 Slick 中将实体添加到多对多关系
- python - 用于拆分多页 PDF 的 Python 脚本适用于某些 PDF 而不是其他的
- python - 对象检测训练内存不足
- javascript - 如何使用单选按钮分配 url 参数值并在 iframe 中加载
- python - 我如何拥有提供现有记录器或实例化新记录器的实用功能?
- java - 如何在 javafx 中隐藏/显示动态创建的节点?
- android - KotlinDslScriptsParameter(correlationId=782785944245786, scriptFiles=[]) 与 Android Studio 4.0
- node.js - 无法从外部访问节点服务器
- python - Django 更快地从 URL 本地存储图像的方法?