Тесты Redis не завершаются после прохождения (используя шутку) - PullRequest
0 голосов
/ 17 мая 2018

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

Пример:

index.test.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())
}

index.js

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

redis.js

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

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

'1 пройдено' ... 'Выполнены все соответствующие тестовые наборы ...'

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

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

1 Ответ

0 голосов
/ 24 мая 2018

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

index.test.js

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

redis.js

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