如何让 mocha 递归地在所有子文件夹中执行测试?
How do I get mocha to execute tests in all subfolders recursively?
我将我的测试分组在文件夹中,如下所示:
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
文件,但这不是我所看到的行为。这是我的错误还是误解?
通过将那些完全相同的模式用引号引起来,mocha
将解析这些模式,而不是 bash
:
"scripts": {
"test:unit": "mocha \"test/unit/**/*.js\""
}
幸运的是,mocha
按预期解析了模式,并将递归查找 test/unit
中的所有 .js
文件,包括任何级别的子文件夹。
TL;DR 无需进一步阅读,除非您尝试对 mocha
以外的内容进行类似的操作。下面是我在 bash
的文件模式匹配方面的进展:
没有引号,我当时无法让它工作超过两个级别:
mocha test/unit/**
以上匹配 test/unit
和第一级子文件夹中的所有文件,但这将匹配任何文件而不仅仅是 .js
mocha test/unit/{,**/}*.js
现在我们只匹配 .js
个文件,但仍然只匹配 test/unit
和第一级子文件夹。
我将我的测试分组在文件夹中,如下所示:
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
文件,但这不是我所看到的行为。这是我的错误还是误解?
通过将那些完全相同的模式用引号引起来,mocha
将解析这些模式,而不是 bash
:
"scripts": {
"test:unit": "mocha \"test/unit/**/*.js\""
}
幸运的是,mocha
按预期解析了模式,并将递归查找 test/unit
中的所有 .js
文件,包括任何级别的子文件夹。
TL;DR 无需进一步阅读,除非您尝试对 mocha
以外的内容进行类似的操作。下面是我在 bash
的文件模式匹配方面的进展:
没有引号,我当时无法让它工作超过两个级别:
mocha test/unit/**
以上匹配 test/unit
和第一级子文件夹中的所有文件,但这将匹配任何文件而不仅仅是 .js
mocha test/unit/{,**/}*.js
现在我们只匹配 .js
个文件,但仍然只匹配 test/unit
和第一级子文件夹。