Tengo una aplicación de consola simple con algunas pruebas. Todo lo que estoy probando es verificar que el juego comience con el nivel 1. Si el nivel actual es 2, el siguiente debería ser 3, etc. El siguiente código funciona bien, pero quería mover la función gameMapper a su propio archivo e importarlo. dentro de Game.js .
Juego.js
export default class Game { constructor(level) { this.level = level; } static start = () => new Game(1); getNextLevel = () => gameMapper.find((g) => g.level === this.level).nextLevel; } const gameMapper = [ { level: 1, nextLevel: new Game(2) }, { level: 2, nextLevel: new Game(3) }, { level: 3, nextLevel: new Game(4) }, ];muestra.prueba.js
import Game from '../src/Game'; describe('Test Game levels', () => { test('Game should start from level 1', () => { const game = Game.start(); expect(game.level).toBe(1); }); test('When game level is 2, the next level should be 3', () => { const game = Game.start().getNextLevel().getNextLevel(); expect(game.level).toBe(3); }); });El código anterior funciona completamente bien. Probé las siguientes soluciones, pero no parecían funcionar para mí. Si alguien conoce alguna solución mejor, por favor hágamelo saber.
TypeError: _Game.default is not a constructorinit a la clase Game que requiere el argumento level e inicializa la clase Game con ese nivel. Pero me sale otro error como se explica a continuación.archivo gameMapper.js
import Game from './Game'; export const gameMapper = [ { level: 1, nextLevel: Game.init(2) }, { level: 2, nextLevel: Game.init(3) }, { level: 3, nextLevel: Game.init(4) }, ];archivo Game.js actualizado
import { gameMapper } from './gameMapper'; export default class Game { static init = (level) => new Game(level); getNextLevel = () => gameMapper.find((g) => g.level === this.level).nextLevel; } Cuando hago lo anterior, donde muevo el gameMapper y lo importo al archivo Game.js , aparece el siguiente error en gameMapper.js .
TypeError: Cannot read properties of undefined (reading 'init') en { level: 1, nextLevel: Game.init(2) }
Espero que las pruebas aún pasen cuando saque el mapeador.
Gracias a todos por su valioso tiempo :)