smartlyio / objection-transactional-tests Goto Github PK
View Code? Open in Web Editor NEWWrap Jest or Mocha tests in Objection transactions
License: ISC License
Wrap Jest or Mocha tests in Objection transactions
License: ISC License
Jest 27 doesn't support dynamically creating before<Each/All>
and after<Each/All>
hooks so this library no longer works. We get
Cannot add a hook after tests have started running. Hooks must be defined synchronously.
Creating this issue in case anyone else is using this library and wants to upgrade to Jest 27+. You can see my full changes in https://github.com/BlockedTODO/BlockedTODO/pull/667/files but to summarize what I do:
In jest.config.js
, add this line
setupFilesAfterEnv: ['./jest.setup.js'],
in jest.setup.js
:
import objection from 'objection';
import knex from './src/db/index.js'; // Change src/db/index.js to the path to the file where you export your knex instance
const {transaction, Model} = objection;
global.beforeAll(async () => {
global.knex = knex;
global.txn = null;
});
global.beforeEach(async () => {
global.txn = await transaction.start(knex);
Model.knex(global.txn);
});
global.afterEach(async () => {
await global.txn.rollback();
Model.knex(knex);
});
global.afterAll(async () => {
global.knex.destroy();
});
Note: this will create a transaction for every single unit test, which may not be desirable in everyone's case.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.