Тесты Redis не выходят после прохождения (с помощью jest)


Я реализовал базовую функциональность кэширования для проекта и столкнулся с проблемой во время тестирования. Я тестирую с помощью jest и redis-mock, и все тесты проходят. Проблема заключается в том, что я импортирую файл, который импортирует redis-файл. Тестовый файл не завершается.

Пример:

Индекс.тест.js

import redis from 'redis'
import redis_mock from 'redis-mock'
jest.spyOn(redis, 'createClient').mockImplementation(red_mock.createClient)
import fileUsingRedis from './index'

describe('index', () => {
  it('should pass', () => expect(true).toBeTruthy())
}

Индекс.js

import {set} from './redis'
export default function ...

Редис.js

import redis from 'redis'
const client = redis.createClient()

export function set(key, value) {...}

"1 прошел"...- Проверил соответствие всех наборов тестов ...'

Но тогда он продолжает ждать, я предположим, потому что редис.createClient() является асинхронным или чем-то еще. Видя, как это происходит на импорте, я не могу просто решить его. Должен ли я закрывать соединение redis-instance после каждого теста?

Каково здесь решение / наилучшая практика?

1 2

1 ответ:

Так что да, закрытие экземпляра сделало это.

Индекс.тест.js

import redis from './redis'
...
afterAll(() => redis.closeInstance())

Редис.js

export function closeInstance(callback) {
  client.quit(callback)
}