我将测试分组在文件夹中,如下所示:
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
文件,但这不是我所看到的行为。这是我的错误还是误解?
答案 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
和第一级子文件夹。