javascript - 配置 Jest 以支持 Typescript (NodeJs)
问题描述
我想为我的 Node/Express/Typescript 应用程序编写测试。在我的src目录旁边,我添加了一个包含此演示内容的app.spec.ts文件的测试目录
import { App } from '../src/app';
describe('App', () => {
let instance: App;
beforeEach(() => {
instance = new App();
});
it('creates an instance of App', async () => {
expect(instance).toBeInstanceOf(App);
});
});
不幸的是,Jest 无法处理 Typescript。
细节:
C:...\tests\app.spec.ts:1 ({"Object.":function(module,exports,require,__dirname,__filename,global,jest){import { App } from '../src/应用程序';
SyntaxError: Unexpected token { at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/ScriptTransformer.js:471:17) at ScriptTransformer.transform (node_modules/@jest/transform/build/ScriptTransformer.js:513:25)
这是我的 package.json(相关字段)
{
"scripts": {
"start": "node dist/app.js",
"dev": "nodemon src/app.ts",
"build": "tsc -p .",
"test": "jest",
"testWithCoverage": "jest --coverage"
},
"devDependencies": {
"@types/express": "^4.17.0",
"@types/jest": "^24.0.17",
"@types/node": "^12.6.9",
"@typescript-eslint/eslint-plugin": "^1.13.0",
"@typescript-eslint/parser": "^1.13.0",
"eslint": "^5.16.0",
"eslint-config-airbnb-base": "^13.2.0",
"eslint-plugin-import": "^2.18.2",
"jest": "^24.8.0",
"nodemon": "^1.19.1",
"ts-jest": "^24.0.2",
"ts-node": "^8.3.0",
"typescript": "^3.5.3"
}
}
此外,我创建了一个包含该内容的jest.config.js文件
module.exports = {
roots: [
'./tests',
],
moduleFileExtensions: [
'ts',
'tsx',
'js',
'jsx',
],
};
有人知道这里缺少什么吗?
解决方案
jest.config.js
将您的文件更改为:
module.exports = {
"roots": [
"<rootDir>/src",
"<rootDir>/tests"
],
"transform": {
"^.+\\.tsx?$": "ts-jest"
},
}
推荐阅读
- php - 如何使用脚本找出禁用 php cookie 的原因?
- swift - Swift 4 - 如何让一个函数在该函数之外设置一个变量
- flutter - 如何从原生插件中获取 Flutter 的纹理?(颤动 => 原生。非原生 => 颤动)
- python - 使用 YAML 文件设置 GCP Cloud Logging
- python - 求和时不断更新列表
- mysql - 如何在同一个表Mysql中包含返回值0
- javascript - Chrome.notifications.create 不起作用,不抛出 lastError
- dart - flutter Bloc模式——导航器后如何访问bloc数据
- bazel - 如何将版本化目标隐藏在非版本化目标后面?
- python - Python 电子邮件接收循环