【问题标题】:Node.js folder structure: unit tests and e2e testsNode.js 文件夹结构:单元测试和 e2e 测试
【发布时间】:2017-02-27 16:44:25
【问题描述】:

目前,我有以下结构:

/src
/tests/e2e
/specs

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

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

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

【问题讨论】:

    标签: javascript node.js testing directory-structure


    【解决方案1】:

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

    我同意在根目录下有一个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 的整体测试,因此它使感觉它在同一水平上!)

    【讨论】:

    • 我忘了我问了这个问题。这实际上是我不久前最终使用的结构。谢谢。
    • 感谢您将其标记为答案!看起来最后这是一个合乎逻辑的设置:-)
    • 有些人可能会担心您的测试文件也将部署到生产环境中。但是,如果您使用 Docker 进行部署(通常是这种情况),您可以通过将 **/*.test.js 添加到您的 .dockerignore 来轻松避免这种情况。所以我喜欢你在这里提出的解决方案。
    • @ayortanli 我相信像 istanbul 这样的包允许文件排除模式。 github.com/istanbuljs/nyc#common-configuration-options
    • 在使用上述分离时,需要将一些库在package.json中移动到依赖项而不是devDependencies(例如mocha,expect等)。解决此问题的最佳方法是什么?我应该为 e2e 文件夹创建一个单独的 package.json 吗?
    猜你喜欢
    • 2021-09-02
    • 1970-01-01
    • 2017-02-10
    • 2018-08-20
    • 1970-01-01
    • 1970-01-01
    • 2016-02-17
    • 1970-01-01
    • 2022-11-08
    相关资源
    最近更新 更多