我有一个使用Typescript和Jest的Node项目。目前我的项目结构如下:
还有这个tsconfig.json
文件。
"compilerOptions": {
"target": "ES2017",
"module": "commonjs",
"allowJs": true,
"outDir": "dist",
"rootDir": "src",
"strict": true,
"moduleResolution": "node",
"esModuleInterop": true
}
这个 jest.config.js
文件
module.exports = {
clearMocks: true,
coverageDirectory: "coverage",
testEnvironment: "node",
};
以及这个package.json
文件
{
"scripts": {
"start": "node dist/App.js",
"dev": "nodemon src/App.ts",
"build": "tsc -p .",
"test": "jest"
},
"dependencies": {
"commander": "^3.0.1"
},
"devDependencies": {
"@types/jest": "^24.0.18",
"@types/node": "^12.7.4",
"jest": "^24.9.0",
"nodemon": "^1.19.2",
"ts-jest": "^24.0.2",
"ts-node": "^8.3.0",
"typescript": "^3.6.2"
}
}
我在我的测试目录中创建了一个测试文件。import { App } from '../src/App';
describe('Generating App', () => {
let app: App;
test('It runs a test', () => {
expect(true).toBe(true);
});
});
但不幸的是,我遇到了语法错误。
SyntaxError:C:... / tests / App.test.ts:意外记号,期望“;”(第5行,第9个字符)
出现在我的app
变量处。看起来测试运行程序无法理解Typescript代码。我应该如何修复配置以支持Jest中的测试文件中的Typescript?
npm run test
时,模式返回0个匹配项,并显示Run with '--passWithNoTests' to exit with code 0 In C:\... 6 files checked
,似乎无法使用tests
目录.. =? - user9945420roots: ['<rootDir>/src'],
替换为roots: ['<rootDir>'],
现在应该可以正常工作了 :) - Putxetests
文件夹中,但在jest.config.js
中你指定了文件夹__tests__
。路径不同,因此找不到匹配项。 - al-bulatnpm install ts-node -D
并将transform: { '^.+\\.ts?$': 'ts-jest' }
添加到 Jest 配置中,解决了我的问题,感谢 @Putxe. - Zymotik