Jest и Typescript: Как настроить работу

Для nodejs 20, можно проверсти такие настройки

  1. Запускать тесты будем командой:
    npm test

    Которую можно как-то так:

    "scripts": {
        "test": "node --experimental-vm-modules node_modules/.bin/jest tests/__tests__"
    }

    -- где в нашем случае tests/__tests__ -- папка (относительно корня проекта), в которой лежат тесты.

  2. Далее, package.json должен иметь зависимость, от пакета ts-jest, и в целом может выглядеть как-то так:
    {
        "name": "pascal-js-intro",
        "description": "How to start code PascalJS",
        "type": "module",
        "devDependencies": {
            "@types/jest": "^29.5.12",
            "@types/node": "^20.11.26",
            "jest": "^29.7.0",
            "ts-jest": "^29.1.2",
            "typescript": "^5.4.2"
        },
        "scripts": {
            "test": "node --experimental-vm-modules node_modules/.bin/jest tests/__tests__"
        }
    }
    
  3. Файл tsconfig.json (в корне проекта) в нашей кофигурации имеет вид:
    {
        "compilerOptions": {
          "baseUrl": ".",
          "outDir": "./built", // fake output dif (haven't been used yet)
          "allowJs": true,
          "target": "es6",
          "module": "es2020",
          "sourceMap": true , 
          "moduleResolution":"node",
          "isolatedModules": true,
          "esModuleInterop": true,
        },
        "include": ["./src/**/*", "./tests/**/*"]
    }
    
  4. Файл jest.config.js:
    export default {
      moduleDirectories: ['node_modules', '<rootDir>'],
      preset: 'ts-jest',
      testEnvironment: 'node',
      extensionsToTreatAsEsm: ['.ts'],
      transform: {
        '^.+\\.tsx?$': [
          'ts-jest',
          {
            "useESM": true
          }
        ]
      },
    };
    

-- этого должно хватить для запуска через:

npm test