一尘不染

摩卡如何才能在我的`src`文件夹中递归搜索特定的文件名模式?

node.js

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

我正在将用法文档放在“ t”后面。我不想find在我的包测试命令中使用。

  1. 我知道mocha可以递归执行测试:

摩卡-递归

  1. 我知道mocha可以使用--recursive标志在特定的子文件夹中执行测试:

mocha src-递归

  1. 我也了解我可以通过以下方式指定一个glob来过滤文件*.tests.js

摩卡* .tests.js

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

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. 为什么摩卡咖啡不提取*.tests.js子文件夹中的文件?
  2. 如果指定文件的完整路径,为什么它能正常工作?
  3. 我如何使其按需工作?

阅读 332

收藏
2020-07-07

共1个答案

一尘不染

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

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

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

2020-07-07