Перейти к основному содержимому

Mocha

Пример как настраивать Mocha для TypeScript:

https://github.com/mochajs/mocha-examples/tree/master/packages/typescript

Файл .mocharc.json

{
"extension": ["ts"],
"spec": "src/**/*.spec.ts",
"require": "ts-node/register"
}

Файл package.json

{
"scripts": {
"test": "mocha"
},
"directories": {
"test": "./src"
},
"devDependencies": {
"@types/mocha": "latest",
"mocha": "latest",
"ts-node": "^9.1.1"
"typescript": "^4.2.4"
}
}

Проблемы с ts-node

Эта проблемы проявляется при запуске mocha в виде генерации ошибки:

TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".ts"

Пакет ts-node не поддерживает ES-модули напрямую (не сразу догадаешься что в этом проблема).

Три способа решения:

Можно исправить файл package.json. Это костыльный способ решения проблемы. Взят отсюда: https://github.com/mochajs/mocha-examples/tree/master/packages/typescript#es-modules

{
"scripts": {
"test": "env TS_NODE_COMPILER_OPTIONS='{\"module\": \"commonjs\" }' mocha"
}
}

Самый актуальный способ. Исправить файл tsconfig.json. Взят отсюда: https://github.com/TypeStrong/ts-node#commonjs

{
"ts-node": {
"compilerOptions": {
"module": "CommonJS"
}
}
}

Идеальный (но авторы его считают экспериментальным) способ. Исправить файл tsconfig.json.

{
"ts-node": {
"compilerOptions": {
"esm": true
}
}
}