如何获得Mocha来递归地在所有子文件夹中执行测试?

时间:2019-02-21 17:19:44

标签: javascript bash mocha filepattern

我将测试分组在文件夹中,如下所示:

test/
├── unit/
├── integration/
└── acceptance/

上述每个文件夹中都有许多测试文件(例如test.js

我使用以下命令执行不同的测试套件:

mocha test/unit/**/*.js
mocha test/integration/**/*.js
mocha test/acceptance/**/*.js

我最近决定为test/unit添加一个子文件夹,以进行一些整理:

test/
└── unit/
    ├── subfolder/
    │   └── new.test.js
    ├── foo.test.js
    └── bar.test.js

但是现在mocha仅在new.test.js中执行测试。

我认为/**/*.js意味着它将在所有文件夹中递归查找.js文件,但这不是我所看到的行为。这是我的错误还是误解?

1 个答案:

答案 0 :(得分:1)

通过将那些完全相同的模式用引号引起来,mocha将解决这些模式,而不是bash

"scripts": {
  "test:unit": "mocha \"test/unit/**/*.js\""
}

幸运的是,mocha将按预期方式解析模式,并将在.js中递归地找到所有test/unit文件,包括任何级别的子文件夹。

TL; DR 无需进一步阅读,除非您尝试对mocha以外的内容进行类似的操作。以下是bash的文件模式匹配的准确程度:

没有引号,我当时无法使其超过两个级别:

mocha test/unit/**

以上内容与test/unit和第一级子文件夹中的所有文件匹配,但这将与任何文件匹配,而不仅仅是.js

mocha test/unit/{,**/}*.js

现在,我们仅匹配.js个文件,但仍仅匹配test/unit和第一级子文件夹。