Skip to content

elonsalfati/jest-redis

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

jest-redis

Jest preset for Redis in-memory server

Usage

1. Install

$ yarn add redis-memory-server jest-redis --dev

2. Create a jest.config.js file

module.exports = {
	preset: 'jest-redis',
}

3. Customizing Redis Server, create a jest-redis.config.js

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
}

4. Configure Redis Client

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()
	})
})

Jest watch mode

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']
}