Skip to content

Instantly share code, notes, and snippets.

@Klerith
Created August 19, 2023 18:35
Show Gist options
  • Select an option

  • Save Klerith/98d7b1bc0f1525e892f260813cad1007 to your computer and use it in GitHub Desktop.

Select an option

Save Klerith/98d7b1bc0f1525e892f260813cad1007 to your computer and use it in GitHub Desktop.
Note + TypeScript + Jest = Testing

Pasos para configurar Jest con TypeScript, en Node

Documentación oficial sobre Jest

  1. Instalaciones de desarrollo (super test es útil para probar Express)
npm install -D jest @types/jest ts-jest supertest
  1. Crear archivo de configuración de Jest
npx jest --init
  1. En el archivo jest.config.js configurar
preset: 'ts-jest',
testEnvironment: "jest-environment-node",

// Opcional - The paths to modules that run some code to configure or set up the testing environment before each test
// setupFiles: ['dotenv/config'],
  1. Crear scripts en el package.json
"test": "jest",
"test:watch": "jest --watch",
"test:coverage": "jest --coverage",
@nicolas-lizarazo
Copy link

nicolas-lizarazo commented Jan 5, 2026

Pongo mi configuracion por si alguno esta usando "type": "module", Dentro del package.json

{
  "name": "02-bases",
  "version": "0.0.1",
  "description": "Esta es mi primera aplicacion real de node",
  "license": "ISC",
  "author": "\"Nico\"",
  "type": "module",
  "main": "app.js",
  "scripts": {
    "dev": "tsx watch src/app.ts",
    "build": "rimraf ./dist && tsc",
    "start": "npm run build && node dist/app.js",
    "test": "node --experimental-vm-modules node_modules/jest/bin/jest.js",
    "test:watch": "node --experimental-vm-modules node_modules/jest/bin/jest.js --watch",
    "test:coverage": "node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage"
  },
  "devDependencies": {
    "@types/jest": "^30.0.0",
    "@types/mocha": "^10.0.10",
    "@types/node": "^25.0.3",
    "jest": "^30.2.0",
    "nodemon": "^3.1.11",
    "rimraf": "^6.1.2",
    "supertest": "^7.1.4",
    "ts-jest": "^29.4.6",
    "ts-node": "^10.9.2",
    "tsx": "^4.21.0",
    "typescript": "^5.9.3"
  },
  "dependencies": {
    "axios": "^1.13.2",
    "chalk": "^5.6.2",
    "get-age": "^1.0.1",
    "inquirer": "^13.1.0",
    "uuid": "^13.0.0",
    "winston": "^3.19.0"
  }
}

@Duhr13
Copy link

Duhr13 commented Jan 9, 2026

Escribo todo esto usando Node 24.12 LTS y un dolooooor de cabeza que en absoluto se lo achaco a Fernando, ya que él durante el curso usaba versiones de dependencias de hace, alrededor, de dos años. Todo eso ha traído una barbaridad de cambios por el camino y los errores y los warnings comienzan a aparecer por todas partes.

Quiero dar gracias a los comentarios anteriores, porque me han ayudado a arreglar algunos de los errores (actualmente me encuentro visualizando el video de los test con Jest en 03-Callbacks dentro de la carpeta 02-bases).

Copio y pego mis dependencias y mis configuraciones por si a alguien le son de utilidad. Ojo especial atención a la parte de "Environment Settings" porque de ahí vienen los problemas del uso de módulos experimentales. Comenté Types y descomenté Lib y Types (un segundo types que aparece después) por recomendación del propio Typescript para Node.

Importante también el "verbatimModuleSyntax": false.

A principios de 2026, el tsconfig.json que nos enseña Fernando y el que vemos nosotros es visualmente diferente.

tsconfig.json:

{

"include": ["src", "tests", "jest.setup.ts"],
"exclude": ["node_modules", "dist"],
// Visit https://aka.ms/tsconfig to read more about this file
"compilerOptions": {
// File Layout
"rootDir": "./",
"outDir": "dist",

// Environment Settings
// See also https://aka.ms/tsconfig/module
"module": "nodenext",
"target": "esnext",
// "types": [],
// For nodejs:
"lib": ["esnext"],
"types": ["node"],
// and npm install -D @types/node

// Other Outputs
"sourceMap": true,
"declaration": true,
"declarationMap": true,

// Stricter Typechecking Options
"noUncheckedIndexedAccess": true,
"exactOptionalPropertyTypes": true,

// Style Options
// "noImplicitReturns": true,
// "noImplicitOverride": true,
// "noUnusedLocals": true,
// "noUnusedParameters": true,
// "noFallthroughCasesInSwitch": true,
// "noPropertyAccessFromIndexSignature": true,

// Recommended Options
"strict": true,
"jsx": "react-jsx",
"verbatimModuleSyntax": false,
"isolatedModules": true,
"noUncheckedSideEffectImports": true,
"moduleDetection": "force",
"skipLibCheck": true,

}
}

Mi Package.json

{
"name": "02-bases",
"version": "0.0.1",
"description": "Esta es mi primera aplicación real de Node",
"license": "MIT",
"author": "Francisco Rodríguez",
"type": "commonjs",
"main": "app.js",
"scripts": {
"dev": "nodemon",
"build": "rimraf ./dist && tsc",
"start": "npm run build && node dist/app.js",
"test": "jest",
"test:watch": "jest --watch",
"test:coverage": "jest --coverage"
},
"devDependencies": {
"@types/jest": "^30.0.0",
"@types/node": "^25.0.3",
"jest": "^30.2.0",
"nodemon": "^3.1.11",
"rimraf": "^6.1.2",
"supertest": "^7.2.2",
"ts-jest": "^29.4.6",
"ts-node": "^10.9.2",
"typescript": "^5.9.3"
},
"dependencies": {
"axios": "^1.13.2",
"get-age": "^1.0.1",
"uuid": "^13.0.0",
"winston": "^3.19.0"
}
}

@jlcarrascof
Copy link

Si el app.test.ts te muestra errores en describe, test y expect ....

En el tsconfig.json, se corrige colocando esta linea:

"types": ["node", "jest"],

Usualmente los valores por defecto son: "types": ["node"],

Si tienen algún feedback, lo dejan por acá ....

Gracias Fernando, por tan valioso material.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment