Tengo una función, llamémosla generarmovimiento que devuelve un valor aleatorio en un tablero de 10 x 10. Hay 100 valores posibles. generarMove debe verificar que su movimiento aleatorio no se realice antes de devolver el movimiento elegido.
En la consola, es muy fácil para mí probar esto llamando a la función 99 veces y haciendo una matriz de todos los movimientos.
es decir.
const alreadyTaken = []; for (let i=0;i<99;i++) { alreadyTaken.push(generateMove()); } Luego puedo hacer un movimiento final llamando a generarMove nuevamente y asignándolo a una variable, es decir. const last = generateMove();
Para verificar si el último movimiento está incluido en la matriz de los otros 99 valores posibles, uso const isIncluded = alreadyTaken.includes(last) , que si lo registro en la consola correctamente, registra false
Estoy tratando de hacer exactamente lo mismo en una función de prueba Jest, es decir.
test('ai does not hit places that were already hit', () => { const alreadyPlayed = []; for (let i=0;i<99;i++) { alreadyPlayed.push(generateMove()); } const last = generateMove(); const isIncluded = alreadyPlayed.includes(last); expect(isIncluded).toEqual(false); }) que debería ser bastante simple, ¿verdad? todo el trabajo pesado se ha hecho y la variable isIncluded debe ser un false booleano simple, que es el único valor que Jest tiene que lograr, pero sigue fallando y agotando el tiempo de prueba.
Intenté poner el bucle y otro código fuera de la función 'prueba' y no ayuda: todo el código está dentro de un bloque de descripción, sin embargo, si eso es relevante.
¿Alguien sabe por qué Jest falla? ¿No puede manejar bucles for, etc. dentro de conjuntos de pruebas?