如何将 Typescript 测试文件与 NodeJS 原生测试运行器递归匹配

问题描述 投票:0回答:1

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
node.js typescript glob node-test-runner
1个回答
0
投票

**
称为 globstar,并非在每个系统上都可用。

一个可能的解决方案(参考:https://github.com/nodejs/help/issues/3902#issuecomment-1307124174)是创建一个自定义脚本,使用

glob
包查找所有文件和子目录,然后运行测试使用
node --loader tsx --test ...
调用
child_process

另请检查:如果 ** 在“npm shell”中工作,为什么不能在 npm package.json 脚本中使用(用于递归通配符)?

© www.soinside.com 2019 - 2024. All rights reserved.