1

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

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文件,但这不是我看到的行为。这是我的错误还是误解?

4

1 回答 1

4

通过将这些完全相同的模式用引号括起来,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第一级子文件夹。

于 2019-02-21T17:19:44.297 回答