无法在NestJS上使用Jest运行测试

时间:2020-01-21 16:55:15

标签: jestjs nestjs

我正在尝试为我的GraphQL端点创建和e2e测试。经过一些努力让Jest查找测试之后,我现在看到Jest尝试以JavaScript而不是TypeScript运行测试。这是一个错误输出:

                if (diff>=3600000)
                {
                    int click=1;
                    Toast.makeText(SpinWheel.this, "inside", Toast.LENGTH_SHORT).show();

              // You need to do a loop here that increments click     
                    if (click<=3)

这是package.json中的测试脚本:

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)

Jest配置文件:

"test:e2e": "jest --config ./tests/jest-e2e.json"

我在做什么错?根据NestJS的文档,测试应该立即可用。

2 个答案:

答案 0 :(得分:2)

按照ts-jest页面上的说明解决了我的问题。

将其放在此处,以防有人需要:

创建一个笑话配置:

yarn ts-jest config:init

如果在tsconfig.json中使用baseUrl,请按如下所示修改配置:

module.exports = {
   preset: 'ts-jest',
   testEnvironment: 'node',
   modulePaths: ['<rootDir>/src'],
}

我希望NestJS文档包含此内容。这样可以节省我的时间。

答案 1 :(得分:0)

在 tsconfig.json 上配置路径
在根项目文件夹中创建 jest.config.js

const { pathsToModuleNameMapper } = require('ts-jest/utils')
const { compilerOptions } = require('./tsconfig')
module.exports = {
  preset: 'ts-jest',
  testEnvironment: 'node',
  moduleNameMapper: pathsToModuleNameMapper(compilerOptions.paths),
  modulePaths: [
    '<rootDir>'
  ],
}