NodeJS 最近添加了一个 native 测试运行器
我可以使用
ts-node
或 tsx
成功让它运行打字稿测试
node --loader ts-node/esm --test **/*.test.ts
node --loader tsx --test **/*.test.ts
但一个主要缺点是 glob 模式 (
**/*.test.ts
) 无法按预期工作。它仅在一个目录下查找 *.test.ts
文件,并且不会在嵌套目录中递归查找测试文件。我认为问题是节点没有将**
视为递归全局模式。
编辑:看起来测试运行程序使用这个 glob 库,它可能不支持该语法...
src/bar.test.ts
src/foo/bar.test.ts
未找到我希望能够将
*.test.ts
文件放在我的应用程序中的任何位置,并让测试脚本执行它们。有什么办法可以做到这一点吗?
.
├── package.json
├── src
│ ├── app
│ │ ├── dir
│ │ │ └── more-nested.test.ts
│ │ └── nested-example.test.ts
│ └── example.test.ts
└── tsconfig.json
**
称为 globstar,并非在每个系统上都可用。
一个可能的解决方案(参考:https://github.com/nodejs/help/issues/3902#issuecomment-1307124174)是创建一个自定义脚本,使用
glob
包查找所有文件和子目录,然后运行测试使用 node --loader tsx --test ...
调用 child_process
。
另请检查:如果 ** 在“npm shell”中工作,为什么不能在 npm package.json 脚本中使用(用于递归通配符)?