【问题标题】:How to get Mocha to execute unit tests in multiple subfolders in Node.js如何让 Mocha 在 Node.js 的多个子文件夹中执行单元测试
【发布时间】:2019-02-23 01:30:37
【问题描述】:

我正在将测试集成到我的 Node 服务器中,但在进行单元测试时遇到了一些问题。当我在我的根目录中运行npm test 时,Mocha 会自动运行我的test 文件夹中的所有测试。但是,分散在整个项目中的单元测试不会运行。如何确保 Mocha 自动运行它们?

【问题讨论】:

    标签: javascript node.js mocha.js


    【解决方案1】:

    您可以将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')"
      ...
    } 
    

    可能还有其他方法可以做到这一点,例如指定测试文件位置的预期全局模式。

    这两种方法都要求测试文件的名称使用普通模式。

    【讨论】:

      【解决方案2】:

      我不明白您为什么要让您的测试“分散在整个项目中”。我认为最好将它们全部保存在专用的测试文件夹中。如果您担心想要轻松找到特定源文件的测试,您可以镜像 src 文件夹的文件夹结构。示例:

      project/
      ├── src/
      │   ├── one/
      │   │   └── foo.js
      │   └── two/
      │       └── bar.js
      └── test/
          ├── one/
          │   └── foo.test.js
          └── two/
              └── bar.test.js
      

      无论您是否决定重新组织您的项目,让 mocha 递归执行所有测试文件的方法如下:

      scripts: {
        "test": "mocha \"./**/*.test.js\""
      }
      

      如果您不想搜索整个项目文件夹,可以将 . 替换为 testsrc(或任何其他文件夹)。

      您可以在此处阅读更多信息:How do I get mocha to execute tests in all subfolders recursively?

      【讨论】:

      • 我喜欢这个设置。您如何测试来自testsrc 文件夹中的方法?您必须像 ../src/myscript.mjs 一样导入它们?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-29
      相关资源
      最近更新 更多