col*_*r-j 5 javascript sequelize.js jestjs
我正在寻找一种方法来使我的测试用例使用sequelize ORM 事务性。这已经在sequelize github issues上进行了讨论:
寻找一种方法来执行以下操作:
describe('My test case', () => {
beforeEach(() => {
... create a transaction
})
afterEach(() => {
... roll back the transaction
})
..... RUN isolated tests
})
Run Code Online (Sandbox Code Playgroud)
我习惯了 Django ORM,它在测试用例中默认执行此操作(其中包括自动管理迁移)。
本文中有一个使用 Jest 和 Sequelize 的示例。
通过您的代码示例,您可以执行以下操作:
import { sequelize } from './connection'
describe('My test case', async () => {
let transaction;
beforeEach(() => {
const cls = new Map();
Object.defineProperty(cls, 'run', {
value: fn => {
fn(this);
return this;
},
});
transaction = await sequelize.transaction();
sequelize.constructor._cls = cls;
sequelize.constructor._cls.set('transaction', transaction);
})
afterEach(async () => {
await transaction.rollback();
})
// ..... RUN isolated tests
})
Run Code Online (Sandbox Code Playgroud)
当然,您可以将beforeEach和afterEach代码放在一个函数中,并在测试文件中调用该函数以避免重复。
| 归档时间: |
|
| 查看次数: |
667 次 |
| 最近记录: |