Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

108
Vistas
How to mock MongoDB client event listeners?

I am confused when trying to mock event listeners using jest. Any suggestions are welcome.

MongoDB Node.js Driver version 4.1.2

index.js

const { MongoClient } = require('mongodb');
const service = {
  name: 'mongo',
  created() {
    this.client = new MongoClient('mongodb://localhost:27017');
  },
  async started() {
    this.client = await this.client.connect();
    this.client.on('error', () => console.error('MongoDB error'));
    this.client.on('close', () => console.log('MongoDB closed'));
  },
};

module.exports = service;

index.spec.ts

This test I try to raise error event after the service broker is started and write specified error message to console.

test('should write error to console', async () => {
  const broker = new ServiceBroker({ logger: false });
  broker.loadService(`${process.cwd()}/index.js`);
  const services = broker.services.filter(
    (service) => service.fullName === 'mongo'
  );
    
  const connectSpy = jest.spyOn(services[0].client, 'connect');
  connectSpy.mockResolvedValue({
    db: jest.fn().mockReturnValue({
          collection: jest.fn(),
    }),
    on: jest.fn(),
  });

  await broker.start();
  expect(connectSpy).toHaveBeenCalled();

  /**
   * TODO: simulate mongo client error event
   *
   * emit mongo client error
   * then assert expect(clientSpy.on).toHaveBeenCalled()
   * or expect(someObj).toBe('MongoDB error')
   */
}

Live Demo

about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda