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

175
Views
Cómo probar los reintentos de una llamada API usando testcafe

Estoy usando Testcafe para mis pruebas de integración y quiero probar el escenario en el que mi aplicación vuelve a intentar una llamada a la API después de recibir un error. Estoy usando la biblioteca de reintentos asíncronos para hacer mis llamadas. Retry es una utilidad que creé para envolver la llamada a la API para poder envolver el código repetitivo para llamar a async-retry:

 const response = await Retry( () => { return fetch( buildUrl(env, csrf, '/api/myCustomCall', queryParams), options ); }, 'getRecommendations', { onRetry: () => { console.log('RETRYING'); } } );

Para la posteridad, esta es la utilidad Retry :

 import retry, { AsyncRetryOptions } from 'async-retry'; export const Retry = ( func: () => Promise<any>, name: string, opts: AsyncRetryOptions = {} ): Promise<any> => { const retryOptions = { retries: opts.retries || 3, factor: opts.factor || 2, minTimeout: opts.minTimeout || 3000, maxTimeout: opts.maxTimeout || Infinity, randomize: opts.randomize || true, onRetry: (error: Error, attempt: number) => { console.error( `${new Date().toString()} - ${name} failed ${attempt} times, trying again` ); } }; return retry(func, retryOptions); };

Esta es mi prueba:

 test.requestHooks( RequestMock() .onRequestTo(/myCustomCall/) .respond({ error: 'Bad value for request parameter' }, 400, responseHeaders) )('Recommendation request retries 3 times', async (t) => { await playgroundInit(t); await t.expect(recommendationLogger.requests.length).eql(4); });

playgroundInit es una función de utilidad que hace cosas como iniciar sesión y navegar a la página que estoy probando. Cuando estaba desarrollando, usé las herramientas de desarrollo de Chrome para bloquear la solicitud de la API para probar los reintentos, lo cual fue exitoso. Vi que los reintentos funcionaban. Sin embargo, me gustaría imitar esto en mi prueba para automatizar este comportamiento. ¿Cómo se burla de una solicitud en testcafe para activar reintentos?

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Según tengo entendido, está realizando su llamada a la API desde el código de prueba de TestCafe, pero no desde la página probada.

En este caso, no se aplicará el mecanismo RequestMock. RequestMock funciona a partir de llamadas a la API que se realizaron desde la página del sitio web. En su caso, usted mismo inicia una solicitud, por lo que el proxy de TestCafe no la procesa.

Si desea que RequestMock funcione, puede intentar hacer sus llamadas a la API desde el navegador, pero no desde el lado de la prueba. Para hacer esto, puede usar el mecanismo ClientFunction que le permite inyectar código JS en la página del sitio web.

about 4 years ago · Juan Pablo Isaza Report
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!