Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

199
Visualizações
¿Cómo fuerzo los tiempos de espera en Jest para probar los errores de tiempo de espera?

Tenemos una función en nuestro proyecto React para obtener una lista de tiendas. Si la recuperación tarda más de 10 segundos, abortamos la solicitud y mostramos un error.

 const controller = new AbortController(); const getTimeout = setTimeout(() => controller.abort(), 10000); const fetchStores = storeId => ( ourFetchStoresFunction(`http://my-api/${storeId}`, { headers: { 'x-block': 'local-stores' }, signal: controller.signal }) .then((results) => { clearTimeout(getTimeout); return results }) .catch((err) => { throw err; }) );

Aquí está la prueba básica para la función fetchStores :

 it('fetchStores should return a stores array', () => { storesAPI.fetchStores(MOCK_STORES) .then((stores) => { expect(Array.isArray(stores)).toBe(true); }) .catch(); });

¿Cómo me burlo de este tiempo de espera en Jest?

usar setTimeout en el bloque .then al llamar a ese método no funcionó. Además, preferiría NO tener que esperar 10 segundos durante la prueba. Busqué jest.useFakeTimers pero no llegué a ninguna parte.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Podría probar los temporizadores globales, lea aquí: jestjs.io/docs/timer-mocks Puede usar la función jest spyOn. Por ejemplo:

 let timeoutSpy; beforeEach(() => { timeoutSpy = jest.spyOn(global, 'setTimeout'); }); afterEach(() => { jest.restoreAllMocks(); })

Luego, en su prueba, puede esperar (tymepoutSpy).toHaveBeenCalledTimes(1); Algo como esto debería funcionar, funcionó en mi caso.

En su caso, también puede burlarse del controlador, nuevamente usando jest.spyOn, podría ser algo como esto:

let abortSpy;

En el mismo beforeEach puedes configurarlo:

abortSpy = jest.spyOn(AbortController.prototype, 'abort');

Y supongo que nuestra función FetchStoresFunction es similar a fetch.

Y finalmente, puede simular la función de búsqueda, por lo que lleva mucho tiempo cargar, se puede hacer de esta manera:

 > global.fetch = jest.fn(() => Promise.resolve({ // set some time }) > );
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda