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

608
Visualizações
TypeError: no se puede desestructurar la propiedad 'enqueueSnackbar'

Tengo una prueba de unidad Jest que está probando un error de una llamada API simulada para garantizar que el mensaje de error se muestre en la página. En mi archivo real, estoy usando notistack para mostrar los mensajes de error. No he mostrado la solicitud de API completa porque no creo que sea relevante, así que, en resumen, es lo siguiente:

miComponente.js :

 import { useSnackbar } from 'notistack'; const myComponent = props => { const { enqueueSnackbar } = useSnackbar() //make an API call to an endpoint ... if (response.ok) enqueueSnackbar("API Success", { variant: "success" }); else enqueueSnackbar("API Failed", { variant: "error" }); }

Como resultado de esto, estoy probando lo anterior en mi prueba unitaria. Nuevamente, no pegaré la prueba unitaria completa porque no creo que sea relevante, sino algo similar a:

miComponente.prueba.js

 import { render, screen } from "@testing-library/react" test("testing error message on API call", async () => { // mock the API call to return a 500 <- this works fine render(<myComponent />) // ensure that the error message is displayed in the screen expect(screen.queryByText(/API Failed/)).toBeInTheDocument(); });

Haciendo lo anterior, me sale un error:

TypeError: no se puede desestructurar la propiedad 'enqueueSnackbar' de '(0, _notistack.useSnackbar) (...)' porque no está definida

Si simplemente incluyo algo como lo siguiente, se enqueueSnackbar() pero la prueba aún falla porque el mensaje es null .

 const mockEnqueue = jest.fn(); jest.mock('notistack', () => ({ ...jest.requireActual('notistack'), useSnackbar: () => { return { enqueueSnackbar: mockEnqueue }; } }));

Sin embargo, ni siquiera quiero burlarme de la barra de bocadillos porque quiero probar el mensaje de visualización real para cada escenario específico (hay varios).

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

0

Envolver el render() dentro de mi prueba unitaria con un SnackbarProvider resolvió el problema.

 import { SnackbarProvider } from "notistack" import { render, screen } from "@testing-library/react" test("testing error message on API call", async () => { /* mock the API call to return a 500 <- this works fine */ render( <SnackbarProvider> <myComponent /> </SnackbarProvider> ) /* ensure that the error message is displayed in the screen */ expect(screen.queryByText(/API Failed/)).toBeInTheDocument(); });
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