Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

140
Views
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
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!