Jasmine无法找到单元测试提示No specs found如何排查解决?
问题场景
项目相关信息如下:
- 项目文件夹结构已通过截图展示
- jasmine.json配置文件内容:
{ "spec_dir": "dist/tests", "spec_files": ["**/*[sS]pec.js"], "helpers": ["helpers/**/*.js"], "stopSpecOnExpectationFailure": false, "random": false }
- 被测文件index.ts代码:
const myFunc = (num: number): number => { return num * num; }; export default myFunc;
- 测试文件indexSpec.ts代码:
import myFunc from '../index'; it('expect myFunc(5) to equal 25', () => { expect(myFunc(5)).toEqual(25); });
运行测试后得到输出:
No specs found
Finished in 0.007 seconds
Incomplete: No specs found
问题原因
核心是Jasmine扫描规则和当前文件状态不匹配:
配置中指定Jasmine扫描dist/tests目录下后缀为.js的测试文件,但当前编写的是.ts格式的TypeScript测试文件,没有提前编译为JS输出到指定目录,Jasmine扫描不到符合规则的测试文件,就会返回找不到spec的提示。
如果已经执行过编译操作,需额外检查tsconfig.json中的outDir配置是否和jasmine.json的spec_dir路径对应,避免编译后的测试文件没有输出到Jasmine的扫描路径下。
解决方案
可任选以下一种方式修复:
- 先编译TS代码再运行测试
执行tsc命令完成TypeScript编译,确认dist/tests目录下生成了对应的*Spec.js文件后,再执行jasmine命令即可正常运行测试。 - 直接运行TS格式测试文件
- 安装所需依赖:执行命令
npm i jasmine-ts ts-node typescript @types/jasmine -D - 修改
jasmine.json中的spec_dir配置,指向存放TS测试文件的源码目录 - 后续使用
jasmine-ts命令代替原生jasmine命令执行测试,无需提前编译TS文件即可直接运行。
- 安装所需依赖:执行命令
内容的提问来源于stack exchange,提问作者Yusuf Sameh
相关产品推荐
相关产品推荐

