使用Mocha结合TypeScript测试Firebase安全规则报No test files found错误
Mocha扫描不到TypeScript测试文件的解决方案
报错根因
你遇到的Error: No test files found: "test"报错由两个核心问题叠加导致:
- Mocha 8.x 版本默认仅扫描扩展名为
.js/.cjs/.mjs的测试文件,完全不会匹配.ts后缀的文件 - 你之前使用的
--watch-extensions ts参数仅在watch监听模式下生效,对常规测试运行的文件扫描逻辑没有任何影响,属于无效配置
分步操作指南
- 首先确认
functions目录下已创建test文件夹,所有Firebase安全规则的测试文件均保存在该文件夹内,避免测试文件散落在其他目录导致匹配失效 - 替换
package.json中的npm测试脚本,移除无效的watch参数,明确指定TS测试文件的扫描路径和ts-node加载器:
"scripts": { "test": "mocha --require ts-node/register 'test/**/*.ts' --exit" }
- 检查
functions目录下的tsconfig.json配置,确保至少开启以下编译选项,避免ts-node加载TS文件时出现编译错误:
{ "compilerOptions": { "target": "es2017", "module": "commonjs", "esModuleInterop": true, "skipLibCheck": true } }
- 终端兼容提示:如果使用旧版Windows终端运行测试,默认不支持递归
**的glob匹配规则,可以将脚本中的测试路径调整为test/*.ts,适用于所有测试文件直接放在test目录下的场景 - 以上配置完成后,即可正常引入已安装的
@firebase/rules-unit-testing工具包编写安全规则测试用例,不需要调整依赖版本
可选优化配置
如果需要简化脚本,可以在functions目录下新建.mocharc.json配置文件,将所有Mocha参数统一写入配置:
{ "require": ["ts-node/register"], "spec": "test/**/*.ts", "exit": true }
配置完成后,npm脚本可以简化为"test": "mocha",运行效果和之前的长脚本完全一致。
内容的提问来源于stack exchange,提问作者Agung
相关产品推荐
相关产品推荐

