当将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"
};```
字符串
2条答案
按热度按时间8yoxcaq71#
ts-jest
默认使用项目中的tsconfig.json
。(Note:如果你想要一个单独的配置文件用于你的测试,你可以configure
ts-jest
to use a different config file)您可以在the config file的
compilerOptions
部分设置alwaysStrict
,ts-jest
在编译TypeScript时使用该标志。vmdwslir2#
在运行测试时,使我能够开始看到编译器错误的唯一配置选项如下:
jest.config.ts
:字符串
使用任何需要自定义
tsconfig.json
进行测试的配置,而不指定:diagnostics: { warnOnly: true }
,只会导致jest默默地失败测试,而不会给我们任何关于发生了什么的线索。甚至简单的diagnostics: true
也不会工作。即使使用上述选项,如果您在jest config中启用了
cache
,您可能会看到这些诊断警告,也可能看不到这些警告。一些解决方案:1.通过将
cache
键设置为false
来禁用jest配置中的缓存。1.在运行测试之前,首先执行
jest --clearCache
,清除jest缓存。另请参阅
exclude
选项,该选项允许您禁用所有非测试文件的错误报告。