Tengo un middleware Express que publica un mensaje en un canal (gracias al mecanismo redis pub/sub bajo el capó); esto lo hace la llamada zeebeRedisAffinity.publishMessageWithAffinity . Esta llamada desencadena la ejecución de un flujo de trabajo y, en algún momento posterior, se inyecta un mensaje de publish en el mismo canal, lo que desencadena la llamada de la función de devolución de llamada cb en la que respondo al usuario: res.send() .
Lo que quiero hacer es burlarme de este mecanismo. Quiero simular o espiar la función zeebeRedisAffinity.publishMessageWithAffinity para asegurarme de obtener la respuesta esperada.
FYI, la biblioteca zeebe-node-affinity usa el paquete npm redis
// middleware.js import zeebeRedisAffinity from '../zeebeRedisAffinity'; const expressMiddleware = async (req, res, next) => { const workflowId = await RedisClient.hGet('userId', 'workflowId'); await zeebeRedisAffinity.publishMessageWithAffinity({ correlationKey: '570840504540540', messageId: '0564405454054054540540', name: 'message-event', variables, workflowInstanceKey: workflowId, cb: (userResponse) => { res.send({response: userResponse}) } }) }; // zeebeRedisAffinity.js import { RedisAffinity } from 'zeebe-node-affinity'; import appConfig from '../appConfig'; const { ZEEBE_GATEWAY, REDIS_HOST, REDIS_AUTH } = appConfig; const zeebeRedisAffinity = new RedisAffinity(ZEEBE_GATEWAY, { host: REDIS_HOST, password: REDIS_AUTH, }); export default zeebeRedisAffinity;