如何解决将CLS与Sequelize非托管交易配合使用
我正在为我的代码编写单元测试,并希望使用transactions
来防止测试之间出现任何杂散数据。
代码使用Sequelize
ORM与数据库进行所有交互。由于不能更改实际代码,因此我将使用cls-hooked
来维护事务上下文,而不是将事务传递给所有查询。但是,有一个问题。在阅读并尝试使用官方文档时,上述方法似乎仅适用于托管交易。
到目前为止,测试代码看起来像:
test("Test decription",async () => {
try {
await sequelize.transaction(async (t) => {
//Actual test code
});
} catch (error) {
//Do nothing if query rolled back
}
});
我打算实现的目标(出于明显的原因):
let t;
beforeEach(async () => {
t = await sequelize.transaction();
});
test("Test decription",async () => {
//Actual test code
});
afterEach(async () => {
await t.rollback();
});
这可能吗?如果是的话,将不胜感激。
解决方法
我遇到了同样的问题——经过多次谷歌搜索,我发现这个关闭的 issue 表明设计不支持非托管事务?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。