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

143
Vistas
Proxyquire con HystrixJS, ¿cómo burlarse de la llamada hystrix?

NodeJS / Express

Tengo un método dentro de un controlador que llama a una API externa a través de un servicio POST. Este método utiliza HystrixJS entre entonces para realizar la llamada.

request.js

 ... const post = (url, req, res, xsd, body = {}) => { // ... simple execute the post method and return a promisse return client.postPromise(url, options).then((response) => (response)); }; ...

controller.js

 const { post } = require('./services/request'); function Xpto(req, res, xsd) { let url = `http://host.io/post-method`; const request = req.app.get('hystrix').hystrixRequestHandler(post, 'blablabla'); const inRequest = req.body; const inResponse = request.execute( url, req, res, xsd, inRequest, ); return inResponse; } // ----------------------------------- function handler(req, res, next) { const response = await Xpto( req, res, xsd ); console.log('================>', response); }

Prueba de los services/request de simulación de controller.js para evitar una llamada API en vivo.

controller.test.js

 ... it('should return success', async () => { mock01 = proxyquire("./controller", { "./services/request": { post: () => Promise.resolve({ response: { statusCode: 200 }, data: { xxx: "00000", }, }), }, }); const response = await mock01.handler(request, res, next); const data = response.body[0].data; expect(response.statusCode).to.equal(200); }); ... it('should return error', async () => { mock02 = proxyquire("./controller", { "./services/request": { post: () => Promise.resolve({ response: { statusCode: 500 }, data: { zzzz: "99999", }, }), }, }); const response = await mock02.handler(request, res, next); const data = response.body[0].data; expect(response.statusCode).to.equal(500); });

Todo funciona bien, excepto que debido a la memoria caché de Hystrix, siempre devuelve statusCode = 200 , incluso en el mock2 , donde lo defino explícitamente para devolver el código de statusCode = 500 .

 AssertionError: expected 200 to equal 500 + expected - actual -200 +500

Estoy buscando una manera de simular la const request = req.app.get('hystrix').hystrixRequestHandler(post, 'blablabla'); u otra forma de evitar este comportamiento.

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