Node.js 文件夹结构:单元测试和端到端测试

Node.js folder structure: unit tests and e2e tests

目前,我有以下结构:

/src
/tests/e2e
/specs

而我用于单元测试的 specs 文件夹,specs 中的结构与 src 中的结构相同。 (例如 /src/user/validator.js 有一个 /specs/user/validator.spec.js 文件)。

但是,我觉得在根目录下有两个测试文件夹是不对的,我想知道社区中是否有关于此的约定。

我确实看过这个帖子:Folder structure for a Node.js project。 BDD 的建议是 spec,单元测试的建议是 tests。但是,我将 BDD(使用 Jasmine 或 Mocha)用于:单元测试和 e2e 测试。

可能有点晚了,但是为可能遇到这个问题的任何人添加这个。

我同意在根目录下有一个 specs 文件夹对于单元测试来说感觉很奇怪。如果我们这样定义:

  • 单元测试链接到单个文件
  • 集成测试可以跨越多个文件
  • e2e 测试与整个服务相关

然后我们可以设置项目结构如:

├── e2e/
├── src/
│   ├── controllers/
│   ├── routes/
│   └── utils/
│       ├── foo.js
│       └── foo.test.js
└── package.json
    ...

package.json 包含这些脚本:

"test:e2e": "node e2e",
"test:unit": "mocha src/**/*.test.js",
"test": "yarn run test:unit && yarn run test:e2e"

在我看来,这让所有的东西都很好地分开了,每个单元测试都在它正在测试的东西旁边,e2e 将所有东西作为一个整体来监督(实际上它正在测试 src 作为一个整体,所以说是一个级别的!)