faeldt / redis-mock

Node.js redis client mock
112 stars 156 forks source link

RedisErrorMock not emitting events as expected #55

Closed vikikamath closed 6 years ago

vikikamath commented 6 years ago

The README page describes how to setup RedisErrorMock

var RedisErrorMock = require("redis-mock").RedisErrorMock;
var redis = new RedisErrorMock();

var client = redis.createClient(); // Emits "error"

client.on("error", function(err) {
  // Fail gracefully
});

The handler defined by client.on("error") never gets called.

However when I use

var redis = require("redis-mock");
var client = redis.createClient();

client.on("connect", function(err) {
  // this is called
});

client.on("ready", function(err) {
  // this is called.
});

Any ideas ?

vikikamath commented 6 years ago

I ended up creating a separate module that copies relevant peices of code from lib/redis-mock:

// redisEventsMock.js

function RedisMock(){}
util.inherits(RedisMock, events.EventEmitter)

function RedisClient(){
      // TODO: call other events to simulate a session if you like 
      process.nextTick(() => this.emit(`error`))
}
util.inherits(RedisClient, events.EventEmitter)
RedisMock.prototype.createClient = () => new RedisClient()

RedisMock.prototype.RedisClient = RedisClient;
module.exports = new RedisMock()