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

241
Visualizações
El valor recibido debe ser una función simulada o espía al simular una clase

Estoy escribiendo una prueba para comprobar que se llama a un método cuando se ejecuta la devolución de llamada. Sin embargo, me está dando este error.

 expect(received).toHaveBeenCalled() Matcher error: received value must be a mock or spy function Received has value: undefined

De acuerdo con los simulacros automáticos de clase de Jest, agregar la línea jest.mock(...) debería ser suficiente para obtener una clase simulada, pero parece que me falta algo aquí.

Este es mi archivo de prueba:

 import { render, fireEvent } from "@testing-library/react"; import Grid from "../../components/Grid"; import DetectFibonacciUseCase from "../../useCases/DetectFibonacciUseCase"; jest.mock("../../useCases/DetectFibonacciUseCase"); describe("GridComponent", () => { test("Should've called the run method when the callback is executed", () => { const { getByTestId } = render(<Grid />); const firstCellButton = getByTestId("cell-testid-0-0"); fireEvent.click(firstCellButton); expect(DetectFibonacciUseCase.run).toHaveBeenCalled(); }); });

La función de devolución de llamada se ve así, y en realidad se está ejecutando :

 const calculateNewValues = (row, column) => { const updatedCells = cells.map((cell) => { cell.value = cell.row === row || cell.column === column ? cell.value + 1 : cell.value; cell.color = cell.row === row || cell.column === column ? ColorConstants.yellow : cell.color; return cell; }); const detectFibonacciUseCase = new DetectFibonacciUseCase( MINIMUM_CONSECUTIVE_APPAREANCES ); const cellsWithFibonacci = detectFibonacciUseCase.run(updatedCells); cellsWithFibonacci.forEach((cellWithFibonacci) => { const cellToUpdateIndex = updatedCells.findIndex( (cell) => cell.row === cellWithFibonacci.row && cell.column === cellWithFibonacci.column ); updatedCells[cellToUpdateIndex].color = ColorConstants.green; updatedCells[cellToUpdateIndex].value = 1; }); setCells(updatedCells); removeColorsAfterTimeout(updatedCells); };

También intenté usar el método de mockImplementation , pero sin suerte. Cualquier sugerencia es bien recibida.

Versión Jest: 26.6.0 Versión React: 17.0.2 Versión React-testing-library: ^12.1.2

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

0

El método de run es llamado por una instancia de la clase DetectFibonacciUseCase , no por la propia clase.

Si bien Jest automock funcionará como se esperaba, debe acceder a la instancia de clase simulada para verificar si se ha llamado a la función de run .

 const mockDetectFibonacciUseCaseInstance = DetectFibonacciUseCase.mock.instances[0]; expect(mockDetectFibonacciUseCaseInstance.run).toHaveBeenCalled();
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