javascript - mocha 如何递归搜索我的 `src` 文件夹以查找特定的文件名模式?

标签 javascript node.js npm mocha.js

在我的 npm 包中,我想模拟 Meteor 遵循的模式:一个源文件(名为 client.js)有一个测试文件(名为 client.tests.js) 位于 src/ 文件夹中。使用 npm test 命令运行测试。

我正在关注“t”的使用文档。我不想在我的包测试命令中使用 find

  1. 我了解 mocha 可以递归执行测试:

    mocha --recursive

  2. 我了解 mocha 可以使用 --recursive 标志在特定子文件夹中执行测试:

    mocha src --recursive

  3. 我也明白我可以通过传递 *.tests.js 来指定一个 glob 来过滤文件:

    mocha *.tests.js

但是,我想要所有三个。我希望 mocha 仅测试 src 文件夹中以 tests.js 结尾的文件,递归检查子目录。

mocha --recursive *.tests.js

// See the files?
$ > ll ./src/app/
total 168
-rw-r--r--  ... client.js
-rw-r--r--  ... client.tests.js

// Option A
$ > mocha --recursive *.tests.js
Warning: Could not find any test files matching pattern: *.tests.js
No test files found

// Option B
$ > mocha *.tests.js --recursive
Warning: Could not find any test files matching pattern: *.tests.js
No test files found.

// Option C
$ > mocha --recursive src/app/*.tests.js
3 passing (130ms)
3 failing

所以……

  1. 为什么 mocha 没有提取子文件夹中的 *.tests.js 文件?
  2. 如果我指定文件的完整路径,为什么它会起作用?
  3. 如何让它按需要工作?

最佳答案

--recursive 标志用于对目录进行操作。如果您要传递与目录匹配的 glob,则将递归检查这些目录,但如果您传递与文件匹配的 glob,就像您正在做的那样,则 --recursive 无效。我建议不要将 --recursive 与 glob 一起使用,因为 glob 已经具有在子目录中递归查找的能力。你可以这样做:

mocha 'src/app/**/*.tests.js'

这将在 src/app 中递归匹配所有匹配 *.tests.js 的文件。请注意我如何在模式周围使用单引号。这是为了引用该模式,以便将其按原样传递给 Mocha 的通配符代码。否则,您的 shell 可能会解释它。根据选项,某些 shell 会将 ** 转换为 *,而您不会得到想要的结果。

关于javascript - mocha 如何递归搜索我的 `src` 文件夹以查找特定的文件名模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43005580/

相关文章:

node.js - 如何从 bash 脚本运行 NVM 命令

node.js - Docker-撰写我无法创建Postgres服务器

java - 创建 Docker 镜像之前构建前端

node.js - 如何在 Node.js 中卸载 npm 模块?

javascript - 调整屏幕大小时,表格会达到最大高度

javascript - onbeforeunload 支持检测

javascript - 如何找到字符串并将其拆分到 node.js 中?

npm - 如何安装 grunt 以及如何用它构建脚本

javascript - 仅允许文本字段中的特定数字

javascript - 如何在metronic的可编辑数据表中创建<select>?