使用ts-node运行Jasmine测试前是否会自动构建TypeScript项目?
你当前使用的测试脚本如下:
"test-backend": "ts-node node_modules/jasmine/bin/jasmine --config=jasmine_backend.json"
脚本运行的编译逻辑
你理解的「执行测试前需要编译TS代码否则无法运行」是正确的,只是这个编译逻辑和常规全量tsc构建有差异:
ts-node的核心作用是在Node.js环境下直接执行TypeScript代码,无需预先调用tsc做全量构建输出.js产物到磁盘- 执行测试时,
ts-node会在内存中按需编译测试脚本以及测试引用到的业务代码,不会触发全量的tsc构建流程,也不会把编译产物写入磁盘
是否需要额外添加tsc校验步骤,可按需求判断:
- 若你只需要保证被测试用例覆盖到的代码类型、语法合规:不需要额外加
tsc步骤。默认配置下ts-node会对运行时加载的所有TS文件做类型检查,出现类型错误会直接抛出导致测试失败 - 若你需要保证项目内所有符合
tsconfig.json配置的TS文件(包括未被测试用例引用到的代码)都没有类型、语法错误:必须在PR检查中额外添加tsc --noEmit的校验步骤。ts-node只会处理运行时加载的文件,不会扫描全量项目代码做检查 - 特殊情况:如果你在
tsconfig.json或ts-node配置中主动关闭了类型检查功能,无论上述哪种情况,都需要单独添加tsc校验步骤
内容的提问来源于stack exchange,提问作者Felix
相关产品推荐
相关产品推荐

