我正在尝试为我的 GraphQL 端点创建和 e2e 测试。在努力让 Jest 找到测试之后,我现在看到 Jest 尝试将测试作为 JavaScript 运行,而不是 TypeScript。这是一个错误输出:
SyntaxError: /server/__tests__/users.e2e-spec.ts: Unexpected token, expected ";" (9:10)
7 |
8 | describe('AppController (e2e)', () => {
> 9 | let app: INestApplication
| ^
10 | let apolloClient: ApolloServerTestClient
11 |
12 | beforeEach(async () => {
at Parser.raise (node_modules/@babel/parser/src/parser/location.js:41:63)
at Parser.unexpected (node_modules/@babel/parser/src/parser/util.js:150:16)
at Parser.semicolon (node_modules/@babel/parser/src/parser/util.js:123:40)
at Parser.parseVarStatement (node_modules/@babel/parser/src/parser/statement.js:703:10)
at Parser.parseStatementContent (node_modules/@babel/parser/src/parser/statement.js:216:21)
at Parser.parseStatement (node_modules/@babel/parser/src/parser/statement.js:146:17)
at Parser.parseBlockOrModuleBlockBody (node_modules/@babel/parser/src/parser/statement.js:865:25)
at Parser.parseBlockBody (node_modules/@babel/parser/src/parser/statement.js:841:10)
at Parser.parseBlock (node_modules/@babel/parser/src/parser/statement.js:818:10)
at Parser.parseFunctionBody (node_modules/@babel/parser/src/parser/expression.js:1964:24)
Run Code Online (Sandbox Code Playgroud)
这是 package.json 中的测试脚本:
"test:e2e": "jest --config ./tests/jest-e2e.json"
Run Code Online (Sandbox Code Playgroud)
和 Jest 配置文件:
module.exports = {
roots: ['<rootDir>/src'],
transform: {
'^.+\\.tsx?$': 'ts-jest',
},
testRegex: '(/__tests__/.*|(\\.|/)(test|spec))\\.tsx?$',
moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],
}
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?根据 NestJS 文档,测试应该是开箱即用的。
按照 ts-jest 页面上的说明解决了我的问题。
把它放在这里以防有人需要它:
创建一个笑话配置:
yarn ts-jest config:init
Run Code Online (Sandbox Code Playgroud)
如果您在 tsconfig.json 中使用 baseUrl,请修改配置如下:
module.exports = {
preset: 'ts-jest',
testEnvironment: 'node',
modulePaths: ['<rootDir>/src'],
}
Run Code Online (Sandbox Code Playgroud)
我希望 NestJS 文档包含这个。它可以节省我的时间。
| 归档时间: |
|
| 查看次数: |
1299 次 |
| 最近记录: |