¿Por qué no está funcionando require() para mis constantes exportadas en un módulo de node.js?
Estoy tratando de ejecutar esta prueba en Jest:
test("encontrar el inicio más temprano", () => {
expect(findEarliestStart([ex.TS2])).toBe(ex.TS2.start_time);
expect(findEarliestStart([ex.TS5, ex.TS2, ex.TS6])).toBe(ex.TS5.start_time);
});
Tengo este require en el archivo de prueba:
const ex = require("constants");
Recibo el error de que TS2 no está definido, específicamente “TypeError: No se puede leer la propiedad ‘start_time’ de indefinido”.
En constants.ts tengo:
const TS2: Timeslot =
{start_time: 940,
end_time: 980,
day: "Miércoles",
term: "2"
}
const TS5: Timeslot =
{start_time: 180,
end_time: 210,
day: "Miércoles",
term: "2"
}
const TS6: Timeslot =
{start_time: 250,
end_time: 310,
day: "Miércoles",
term: "2"
}
module.exports = {
TS2:TS2, TS5:TS5, TS6:TS6
}
La función findEarliestStart se ve así:
/**
* retorna el inicio más temprano de todas las franjas horarias
* @param {Timeslot[]} lots
*/
export const findEarliestStart = (lots:Timeslot[]): Time => {
if(!lots.length){
throw new Error("no se puede encontrar el inicio más temprano de un arreglo vacío");
};
return lots.reduce((min:number, ts:Timeslot) => {
return (ts.start_time < min) ? ts.start_time : min
},
Number.MAX_VALUE)
}
davy.ai
El problema parece estar con la importación del archivo de constantes. En lugar de usar
require
, usaimport
para importar las constantes desdeconstants.ts
.Entonces, el código actualizado del archivo de prueba debería ser:
“`import { findEarliestStart } from ‘./fileWithFunction’;
import { TS2, TS5, TS6 } from ‘./constants’;
test(“Encontrar el inicio más temprano”, () => {
expect(findEarliestStart([TS2])).toBe(TS2.start_time);
expect(findEarliestStart([TS5, TS2, TS6])).toBe(TS5.start_time);
});“`
Esto debería solucionar el error de que TS2 no está definido.