node.js - 如何在 typescript 中使用 jest 配置

原文 标签 node.js typescript jestjs

我正在使用 nestjs。
在运行所有测试之前需要运行迁移。毕竟运行测试 nedd 运行清晰的测试模式。
如果我在 test/config/setup.js 中使用 javascript 设置文件 package.json所有作品。
但如果我使用 typescript 文件不起作用。

    "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)

最佳答案

这是我的 jest.config.js文件,适用于 .ts设置文件。添加 '^.+\\.tsx?$': 'ts-jest',改造您的 .ts文件和更改 tsConfigFiletsConfig .

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",
    }
  }
};

关于node.js - 如何在 typescript 中使用 jest 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54185203/

相关文章:

node.js - 加速Socket.IO

node.js - 是否可以为多个localhost项目设置自定义开发域?

node.js - 使用jade在node.js中渲染html + js页面时,将html作为文本渲染而不是html

typescript - 文件夹内的特定 tsconfig.json 规则

mysql - 在nodejs中正确的异步mysql查询?

angular - 动态更改angular2-query-builder中的配置

mongodb - 在NestJS中做种子mongoDB的正确方法是什么,使用 Mongoose 并利用我已经定义的schmas

javascript - 无法使用 jest.each 运行测试

javascript - `window` 没有暴露给 Jest

typescript - 如何在模拟函数时允许部分 TypeScript 类型 - Jest、TypeScript