Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

856
Vistas
La prueba Jest está fallando: no se puede espiar la propiedad getNextPos porque no es una función; indefinido dado en su lugar

Llamo a getNextPos desde la función de solución y obtengo val, pos y dir. Pero mi caso de prueba está fallando "No se puede espiar la propiedad getNextPos porque no es una función; en su lugar, no está definida". Solo quiero probar una función de otra función y los valores de retorno. Aquí está el archivo app.js

 function getNextPos(grid, currPos, currDir, move) { const nextDir = nextDirMap[currDir][move]; const [r, c] = currPos; const maxRowLength = grid.length-1; const maxColLength = grid[0].length-1; switch (nextDir) { case "north": { if (r <= 0) { cost = cost + (uncleardSquare * 3); throw new CustomException("Unable to move, there is an attempt to navigate beyond the boundaries of the site."); } return { val: grid[r - 1][c], pos: [r - 1, c], dir: "north" }; } } function solution(grid, index, direction, bulldozerMove) { div.innerText = ""; let currPos = index; let currDir = direction; bulldozerMove = bulldozerMove.toLowerCase(); let { val, pos, dir } = getNextPos(grid, currPos, currDir, bulldozerMove); }

Aquí está el archivo app.test.js

 const { getNextPos, solution} = require('./app'); const grid = [ ["r", "o", "t", "t"], ["o", "r", "o", "t"], ["o", "o", "o", "t"], ]; describe("solution function", () => { test('should call getNextPos', () => { const spy = jest.spyOn(solution, 'getNextPos'); const isCalled = solution.getNextPos(); expect(spy).toHaveBeenCalled(); expect(isCalled).toBe(true); spy.mockRestore(); }) })
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Parece que te estás burlando/espiando getNextPos dentro del objeto de la solution , pero de hecho, la solution no es un objeto, es una función.

Por ejemplo:

 // calc.js const calc = { sum: (n1, n2) => n1 + n2 } module.exports = { calc }

luego en un archivo de prueba:

 import { calc } from './calc.js' const sumSpy = jest.spyOn(calc, 'sum') it('should pass because calc.sum has been mocked', () => { sumSpy.mockReturnValue(20); expect(calc.sum(5, 5)).toBe(20) })

eso funciona correctamente porque estoy espiando una función dentro de un objeto. Tal vez puedas hacer un refactor para mover cosas para separarlas en objetos.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda