【发布时间】:2019-02-23 01:30:37
【问题描述】:
我正在将测试集成到我的 Node 服务器中,但在进行单元测试时遇到了一些问题。当我在我的根目录中运行npm test 时,Mocha 会自动运行我的test 文件夹中的所有测试。但是,分散在整个项目中的单元测试不会运行。如何确保 Mocha 自动运行它们?
【问题讨论】:
标签: javascript node.js mocha.js
我正在将测试集成到我的 Node 服务器中,但在进行单元测试时遇到了一些问题。当我在我的根目录中运行npm test 时,Mocha 会自动运行我的test 文件夹中的所有测试。但是,分散在整个项目中的单元测试不会运行。如何确保 Mocha 自动运行它们?
【问题讨论】:
标签: javascript node.js mocha.js
您可以将npm test 命令修改为find 您的测试文件并针对它们运行mocha。
假设目录结构如下:
project/
src/
test/
main-tests.test.js
things/
test/
thing.test.js
more_things/
more-things.test.js
您可以像这样更改您的package.json:
scripts: {
...
"test": "mocha $(find . -name '*.test.js')"
...
}
可能还有其他方法可以做到这一点,例如指定测试文件位置的预期全局模式。
这两种方法都要求测试文件的名称使用普通模式。
【讨论】:
我不明白您为什么要让您的测试“分散在整个项目中”。我认为最好将它们全部保存在专用的测试文件夹中。如果您担心想要轻松找到特定源文件的测试,您可以镜像 src 文件夹的文件夹结构。示例:
project/
├── src/
│ ├── one/
│ │ └── foo.js
│ └── two/
│ └── bar.js
└── test/
├── one/
│ └── foo.test.js
└── two/
└── bar.test.js
无论您是否决定重新组织您的项目,让 mocha 递归执行所有测试文件的方法如下:
scripts: {
"test": "mocha \"./**/*.test.js\""
}
如果您不想搜索整个项目文件夹,可以将 . 替换为 test 或 src(或任何其他文件夹)。
您可以在此处阅读更多信息:How do I get mocha to execute tests in all subfolders recursively?
【讨论】:
test 的src 文件夹中的方法?您必须像 ../src/myscript.mjs 一样导入它们?