Jest preset for Redis in-memory server
$ yarn add redis-memory-server jest-redis --dev
module.exports = {
preset: 'jest-redis',
}
See redis-memory-server to learn more about the optional configuraitons.
module.exports = {
redisMemoryServerOptions: {
instance: {
port: number, // by default, choose any free port
ip: string, // by default, '127.0.0.1'; for binding to all IP addresses set it to `::,0.0.0.0`,
args: [], // by default, no additional arguments; any additional command line arguments for `redis-server`
},
binary: {
version: string, // by default, 'stable'
downloadDir: string, // by default, 'node_modules/.cache/redis-memory-server/redis-binaries'
systemBinary: string, // by default, undefined
},
autoStart: boolean, // by default, true
},
useSharedDBForAllJestWorkers: boolean, // enables seperated database for each test worker. This disables the exported environment variable.
redisURLEnvName: string, // the exported environment variable name
}
This library sets the process.env[options.redisURLEnvName]
(by default process.env.REDIS_URL
) for your convenience. However, it's preferable to use global.__REDIS_URL__
as is works with useSharedDBForAllJestWorkers
.
const Redis = require('ioredis')
describe('set', () => {
let client
beforeAll(async () => {
client = new Redis(global.__REDIS_URL__)
await client.connect()
})
afterAll(async () => {
await client.disconnect()
})
})
This package creates the file redisGlobals.json
in the project root when using jest --watch
flag. Changes to this file can cause issues.
In order to avoid unwanted behaviour, add the redisGlobals.json
to your ignore files and in jest.config.js
, add:
// jest.config.js
module.exports = {
watchPathIgnorePatterns: ['redisGlobals']
}