Registry / testing / mysql-transactional-tests

mysql-transactional-tests

JSON →
library1.0.3jsnpmunverified

A library (v1.0.3) that patches mysql/mysql2 drivers to wrap each test in a database transaction, automatically rolling back after each test. Inspired by Rails, Laravel, and Spring testing patterns. Supports Knex, Kysely, Sequelize, TypeORM, MikroORM and any ORM/client using mysql or mysql2 drivers. Enables fast, isolated integration tests with a real database without manual cleanup. No recent updates. Import before your database client. ESM and CJS compatible.

npm install mysql-transactional-tests
INSTALL
IMPORT
SIG · MYSQL-TRANSACTIONA
M
mysql-transactional-tests
testingjavascriptv1.0.3
harness data pending
Install & Compatibility
Where this runs

No compatibility data collected yet for this library.

Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

startTransaction
import { startTransaction } from 'mysql-transactional-tests/mysql'
import { startTransaction } from 'mysql-transactional-tests'
Must import from subpath '/mysql' or '/mysql2' depending on driver. Default export does not exist.
unPatch
import { unPatch } from 'mysql-transactional-tests/mysql2'
const unPatch = require('mysql-transactional-tests').unPatch
CommonJS require should use 'mysql-transactional-tests/mysql2'. The main entry point is not intended for use.
startTransaction
const { startTransaction } = require('mysql-transactional-tests/mysql')
const startTransaction = require('mysql-transactional-tests/mysql').startTransaction
CommonJS destructure works, but direct property access is also fine.

Shows how to set up transactional tests with mysql driver: startTransaction before each test, rollback after, and unPatch in afterAll.

import { startTransaction, unPatch } from 'mysql-transactional-tests/mysql'; import mysql from 'mysql'; const connection = mysql.createConnection({ host: 'localhost', user: 'root', password: '', database: 'test' }); describe('transactional tests', () => { let rollback: () => Promise<void>; beforeEach(async () => { ({ rollback } = await startTransaction()); }); afterEach(async () => { await rollback(); }); afterAll(() => { connection.end(); unPatch(); }); it('should insert and rollback', (done) => { connection.query('INSERT INTO users (name) VALUES (?)', ['test'], (err) => { if (err) return done(err); connection.query('SELECT * FROM users', (err, rows) => { if (err) return done(err); expect(rows).toHaveLength(1); done(); }); }); }); });
Debug
Known issues
breakingImport must use subpath '/mysql' or '/mysql2', not the main package entry.
fix
Import from 'mysql-transactional-tests/mysql' or 'mysql-transactional-tests/mysql2' accordingly.
affects: >=1.0.0
gotchaLibrary must be imported before your database client (mysql/mysql2) to patch correctly.
fix
Ensure 'mysql-transactional-tests/mysql' or '/mysql2' is imported before any mysql/mysql2 require/import.
affects: >=1.0.0
gotchastartTransaction returns an object with a rollback function; destructure carefully to avoid undefined.
fix
Use `const { rollback } = await startTransaction();`
affects: >=1.0.0
deprecatedNo deprecated features known yet; library is actively maintained.
affects: >1.0.0
Errors
Common errors & fixes
Cannot find module 'mysql-transactional-tests'
Importing from the main entry point instead of subpath.
fix
Import from 'mysql-transactional-tests/mysql' or 'mysql-transactional-tests/mysql2'.
TypeError: (intermediate value).startTransaction is not a function
Incorrect destructuring or import path.
fix
Use `import { startTransaction } from 'mysql-transactional-tests/mysql'` or `const { startTransaction } = require('mysql-transactional-tests/mysql')`.
ER_LOCK_DEADLOCK: Deadlock found when trying to get lock
Nested transactions or concurrent tests causing deadlock.
fix
Ensure each test runs its own transaction; avoid manual transaction management inside test.
Upgrade
Version history
1.0.3latest on npm
Audit
Dependencies
mysqloptionalrequired peer dependency if using mysql driver
mysql2optionalrequired peer dependency if using mysql2 driver
Agent activity
11 hits · last 30 days
node
10
Resources
mysql-transactional-tests — npm install mysql-transactional-tests · libregistry