You need to enable JavaScript to run this app. 使用Mocha结合TypeScript测试Firebase安全规则报No test files found错误
优惠活动
大模型
产品
解决方案
定价
更多

使用Mocha结合TypeScript测试Firebase安全规则报No test files found错误

Mocha扫描不到TypeScript测试文件的解决方案

报错根因

你遇到的Error: No test files found: "test"报错由两个核心问题叠加导致:

  1. Mocha 8.x 版本默认仅扫描扩展名为.js/.cjs/.mjs的测试文件,完全不会匹配.ts后缀的文件
  2. 你之前使用的--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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.28 05:45:04