【问题标题】:How to use jest configuration with typescript如何将 jest 配置与 typescript 一起使用
【发布时间】:2019-06-08 15:49:03
【问题描述】:

我正在使用nestjs。
在运行所有测试之前需要运行迁移。毕竟运行测试 nedd 运行清除测试模式。
如果我在 test/config/setup.js package.json 中使用 javascript 设置文件,则一切正常。
但是如果我使用打字稿文件不起作用。

    "globals": {
      "ts-jest": {
        "tsConfigFile": "tsconfig.json"
      }
    },
    "globalSetup": "./config/setup.ts",
    "globalTeardown": "./config/teardown.ts",
    "moduleFileExtensions": [
      "js",
      "json",
      "ts"
    ],
    "rootDir": "./test",
    "testRegex": ".spec.ts$",
    "transform": {
      "^.+\\.(t|j)s$": "ts-jest"
    },
    "coverageDirectory": "../coverage",
    "testEnvironment": "node"
  }

test/config/setup.ts

import * as dotenv from 'dotenv'; // errors when run jest

module.exports = async () => {
    dotenv.config({path: '.env.test'});
};

错误

/home/jashka/job/projects/project-name/test/config/setup.ts:1
(function (exports, require, module, __filename, __dirname) { import * as dotenv from 'dotenv';
                                                                     ^

SyntaxError: Unexpected token *
    at new Script (vm.js:79:7)
    at createScript (vm.js:251:10)
    at Object.runInThisContext (vm.js:303:10)
    at Module._compile (internal/modules/cjs/loader.js:656:28)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:699:10)
    at Module.load (internal/modules/cjs/loader.js:598:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:537:12)
    at Function.Module._load (internal/modules/cjs/loader.js:529:3)
    at Module.require (internal/modules/cjs/loader.js:636:17)
    at require (internal/modules/cjs/helpers.js:20:18)

【问题讨论】:

    标签: node.js typescript jestjs


    【解决方案1】:

    这是我的jest.config.js 文件,它适用于.ts 设置文件。添加'^.+\\.tsx?$': 'ts-jest', 以转换您的.ts 文件并将tsConfigFile 更改为tsConfig

    module.exports = {
      setupFiles: ['<rootDir>/tests/unit/setup.ts'],
      globalSetup: '<rootDir>/tests/unit/globalSetup.ts',
      globalTeardown: '<rootDir>/tests/unit/globalTeardown.ts',
      moduleFileExtensions: ['js', 'jsx', 'ts', 'tsx'],
      transform: {
        '^.+\\.jsx?$': 'babel-jest',
        '^.+\\.tsx?$': 'ts-jest',
      },
      moduleNameMapper: {
        '^@/(.*)$': '<rootDir>/src/$1',
      },
      testMatch: [
        '<rootDir>/tests/unit/**/(*.)spec.(js|jsx|ts|tsx)',
      ],
      globals: {
        'ts-jest': {
          babel: true,
          tsConfig: "tsconfig.json",
        }
      }
    };
    

    【讨论】:

      猜你喜欢
      • 2018-08-09
      • 1970-01-01
      • 2020-02-04
      • 2019-05-25
      • 1970-01-01
      • 1970-01-01
      • 2021-09-17
      • 2018-06-14
      • 2021-04-02
      相关资源
      最近更新 更多