Estoy confundido cuando trato de burlarme de los oyentes de eventos usando broma. Cualquier sugerencia es bienvenida.
Controlador MongoDB Node.js versión 4.1.2
índice.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
En esta prueba, trato de generar un evento de error después de que se inicia el agente de servicio y escribo el mensaje de error especificado en la consola.
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') */ }