NodeJS 如何本地测试运行器递归匹配TypeScript测试文件

NodeJS 如何本地测试运行器递归匹配TypeScript测试文件

问题描述

最近,NodeJS添加了一个本地测试运行器

我可以成功地使用ts-nodetsx运行TypeScript测试

  • node --loader ts-node/esm --test **/*.test.ts
  • node --loader tsx --test **/*.test.ts

但是一个主要的缺点是通配符模式**/*.test.ts无法按预期工作。它只能在一个目录下找到*.test.ts文件,并且无法递归地在嵌套目录中查找测试文件。我认为问题在于Node没有将**作为递归通配符模式处理。

编辑: 看起来测试运行器使用了这个通配符库,可能不支持那个语法…

  • 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 并且不适用于每个系统。

第一个可能的解决方案是从根文件夹使用 find 来获取与指定模式匹配的文件列表(它会查找每个子文件夹),然后对每个找到的文件运行 node --loader tsx --test

find . -name "*.test.ts" -exec node --loader tsx --test {} ';'

另一个可能的解决方案(参考: https://github.com/nodejs/help/issues/3902#issuecomment-1307124174 )是创建一个自定义脚本,使用 glob 包找到所有文件和子目录,然后在调用中运行测试 node --loader tsx --test ... ,使用 child_process

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程