我编写了一个使用 ioredis 的模块和一些测试来配合它。
问题是,当我在集群模式下连接 ioredis 时,mocha 在完成后挂起,即使我调用redis.disconnect()
.
似乎某些东西仍然绑定到事件循环。
这是我的测试:
it('connects to redis cluster mode', async () => {
//redisClientFactroy is my module
let redisClientFactory = redisClientFactoryInit({
host: 'localhost',
port: 7000
})
// it returns a redis.cluster instance if it recognizes it
// 'redis' here is a cluster client
let redis = await redisClientFactory.createClient()
await redis.set('took123', 1);
let took = await redis.get('took123')
expect(took).to.eql('1')
let nodes = redis.nodes()
await Promise.all(nodes.map((node) => {
node.disconnect()
console.log("node disconnected")
}))
redis.disconnect()
//tests are marked as done and passing, but mocha does not exit
})