Я пытаюсь заставить модульные тесты с мокко работать. Я использую машинопись, которая компилируется в простой JavaScript с помощью TSC. Я всегда получаю сообщение об ошибке:
src\index.ts:22
[new FrontendEndpoint(), ...],
^
TypeError: v1_1.default is not a constructor
Я подошел двумя способами (и столкнулся с одной и той же проблемой дважды):
Сначала я создал фиктивный тест test.test.ts
, импортируя некоторые из моих модулей для тестирования:
import { APIServer } from './../api/index';
import { describe } from 'mocha';
import FrontendEndpoint from '../api/endpoints/frontend/v1';
import { SocketConnector } from '../api/sockets/socketio';
describe('TestTest', () => {
it('should run', (done) => {
const server = new APIServer(4000, [new FrontendEndpoint()], new SocketConnector([]));
done();
});
});
Использование ts-mocha
- Установлено ts-mocha, mocha, @ types / mocha
- Ран
ts-mocha src/test/test.test.ts
Использование mocha и скомпилированных файлов ts
- установлен мокко, @ types / mocha
- Ран
mocha build/test/test.test.js
Оба способа выдают ошибку выше.
index.ts
выглядит так:
import FrontendEndpoint from './api/endpoints/frontend/v1';
[...]
new FrontendEndpoint()
Скомпилировано (index.js):
[...]
const v1_1 = require("./api/endpoints/frontend/v1");
[...]
new v1_1.default()
И frontend/v1.ts
:
export default class FrontendEndpoint {
[...]
}
Скомпилировано (v1.js):
class FrontendEndpoint {
[...]
}
exports.default = FrontendEndpoint;
Мой tsconfig выглядит так:
{
"compilerOptions": {
"target": "es2015",
"module": "commonjs",
"moduleResolution": "node",
"sourceMap": true,
"noImplicitReturns": true,
"noImplicitAny": true,
"preserveConstEnums": true,
"strictPropertyInitialization": false,
"experimentalDecorators": true,
"typeRoots": [
"src/types"
],
"emitDecoratorMetadata": true,
"sourceRoot": "src",
"outDir": "build"
},
"compileOnSave": true,
"exclude": [
"node_modules",
"coverage",
"build",
"logs"
],
}
Кажется, есть проблемы только с экспортом по умолчанию. Почему они не работают должным образом? При запуске приложения с использованием node build/index.js
все работает нормально, экспорт / импорт по умолчанию работает как ожидалось.
У меня возникают те же проблемы при попытке добавить модульные тесты в мое приложение React с веб-пакетом, Mocha и Jest. Я что-то пропускаю полностью?