摩卡如何recursionsearch我的`src`文件夹的特定文件名模式?

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

我正在使用文档到't'。 我不想在我的包testing命令中使用find

  1. 我明白,摩卡可以recursion地执行testing:

    摩卡 – recursion

  2. 我明白摩卡可以使用--recursive标志在特定的子文件夹中执行testing:

    摩卡src – recursion

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

    摩卡* .tests.js

但是,我想要所有三个。 我想摩卡只testingsrc文件夹中以tests.js结尾的文件,recursion检查子目录。

 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. 为什么如果我指定文件的完整path,它是否工作?
  3. 我如何使其按需要工作?

--recursive标志是为了在目录上运行。 如果你要传递一个与目录相匹配的glob,那么这些目录将被recursion地检查,但是如果你传递一个匹配文件的glob,就像你正在做的那样,那么--recursive是无效的。 我build议不要使用 – glob的recursion,因为globs已经有能力在子目录中recursion地查看。 你可以这样做:

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

这将匹配在src/apprecursion匹配*.tests.js所有文件。 请注意我是如何在模式中使用单引号的。 这是引用的模式,以便它原样传递给摩卡的globbing代码。 否则,你的shell可能会解释它。 一些shell根据选项将把**转换成* ,你不会得到你想要的结果。