Run your tests using Jest & Postgres
npm install @shelf/jest-postgres> Jest preset to run Postgres server
Test Postgres using only this jest plugin (no DB mocks/Docker)!
```
$ yarn add @shelf/jest-postgres --dev
`js`
module.exports = {
preset: '@shelf/jest-postgres',
};
If you have a custom jest.config.js make sure you remove testEnvironment property, otherwise it will conflict with the preset.
`js
const cwd = require('cwd');
module.exports = {
seedPath: ${cwd()}/test/seed.sql,`
version: 14,
port: 5555,
};
Find seed.sql example in ./test folder of this repo, view postgres-local for more params.
> When your project itself uses CommonJS, you can keep using a jest-postgres-config.js file.jest-postgres-config.cjs
> Starting with v1.2.3+, the preset prefers but will still fall back to the .js
> variant for backward compatibility.
`js`
it();
By default the jest-postgres-config.cjs (falling back to .js) is read from cwd directory, but this might not bejest.config.*
suitable for monorepos with nested jest projects
with nested files nested in subdirectories.
If your Jest Postgres config file is not located at {cwd}/jest-postgres-config.cjs (or .js) or youjest projects
are using nested , you can define the environment variable JEST_POSTGRES_CONFIG
with the absolute path of the respective configuration file.
`js
// src/nested/project/jest.config.js
const path = require('path');
// Define path of project level config - extension is optional as the loader checks for
// both .cjs and .js automatically.
process.env.JEST_POSTGRES_CONFIG = path.resolve(__dirname, './jest-postgres-config');
module.exports = {
preset: '@shelf/jest-postgres',
displayName: 'nested-project',
};
`
Starting with v1.2.3 the package declares "type": "module" so Node can load our sources with native ESM tooling. .cjs
To remain backward compatible we now ship prebuilt entry points for the preset and helpers while keeping therequire('@shelf/jest-postgres')
original TypeScript source. CommonJS consumers can continue using , and ESM projectsimport preset from '@shelf/jest-postgres'
can or import preset from '@shelf/jest-postgres/jest-preset'.
The runtime config loader also prefers jest-postgres-config.cjs but automatically falls back tojest-postgres-config.js. If your config exports an ES module (for example, you use export default {...}) it willimport()
still be picked up because the loader falls back to a dynamic when a CommonJS require is not supported.
- postgres-local
- jest-elasticsearch
- jest-dynamodb
`sh``
$ git checkout master
$ yarn version
$ yarn publish
$ git push origin master --tags
MIT © Shelf