使用TypeScript和Jest不能捕获语法错误

enyaitl3  于 12个月前  发布在  Jest
关注(0)|答案(2)|浏览(187)

当将typescript编译回js时,你可以指定--alwaysStrict选项:
在严格模式下解析并为每个源文件发出“use strict”
所以,如果你在一个函数中缺少一个强制参数,它会被这个严格模式捕获。
我们使用ts-jest,所以我们可以使用Jest来测试我们的Typescript代码。我们面临的问题是,我们还没有找到一种方法来模拟严格的解析行为。
这真的很烦人,因为所有的测试似乎都通过了,但有时会有语法错误,我们只有在创建生产构建时才注意到(在这里我们设置了--alwaysStrict)。
在我们的jest.config.js中,我们有:

module.exports = {
  roots: ["<rootDir>/src"],
  transform: {
    "^.+\\.tsx?$": "ts-jest"
  },
  testRegex: "(/__tests__/.*|(\\.|/)(test|spec))\\.tsx?$",
  moduleFileExtensions: ["ts", "tsx", "js", "jsx", "json", "node"],
  "testEnvironment": "node"
};```

字符串

8yoxcaq7

8yoxcaq71#

ts-jest默认使用项目中的tsconfig.json
(Note:如果你想要一个单独的配置文件用于你的测试,你可以configure ts-jest to use a different config file
您可以在the config filecompilerOptions部分设置alwaysStrictts-jest在编译TypeScript时使用该标志。

vmdwslir

vmdwslir2#

在运行测试时,使我能够开始看到编译器错误的唯一配置选项如下:
jest.config.ts

{
   // ...
   transform: {
    // '^.+\\.[tj]sx?$' to process js/ts with `ts-jest`
    // '^.+\\.m?[tj]sx?$' to process js/ts/mjs/mts with `ts-jest`
    '^.+\\.tsx?$': [
      'ts-jest',
      {
        tsconfig: 'tests/tsconfig.json',
        diagnostics: {
          warnOnly: true, // <- This is the key
        },
      },
    ],
  },
}

字符串
使用任何需要自定义tsconfig.json进行测试的配置,而不指定:diagnostics: { warnOnly: true },只会导致jest默默地失败测试,而不会给我们任何关于发生了什么的线索。甚至简单的diagnostics: true也不会工作。
即使使用上述选项,如果您在jest config中启用了cache,您可能会看到这些诊断警告,也可能看不到这些警告。一些解决方案:
1.通过将cache键设置为false来禁用jest配置中的缓存。
1.在运行测试之前,首先执行jest --clearCache,清除jest缓存。
另请参阅exclude选项,该选项允许您禁用所有非测试文件的错误报告。

相关问题