运行 多个 cwd 上的 Mocha 和 Istanbul

Running Mocha and Istanbul on multiple cwd

我正在寻找一种方法来管理测试并覆盖具有多个微服务的项目,这些微服务在其目录中有自己的测试。

└── services
    ├── service-1
    │   ├── src
    │   └── test
    ├── service-2
    │   ├── src
    │   └── test
    └── service-3
        ├── src
        └── test

每个服务都有自己的测试,它们都需要从自己的 cwd 执行,以使要求和路径正常工作。

从项目的根启动这些测试并让 nyc 覆盖整个项目的最佳方法是什么?

截至目前,我正在使用 bash 脚本 test.sh:

#!/bin/bash
set +e

(cd ./services/service-1 && npm run test)
(cd ./services/service-2 && npm run test)
(cd ./services/service-3 && npm run test)

并使用 npx nyc ./test.sh 启动它,但如果 service-1 上的测试失败,service-2service-3 仍将执行并被视为成功,尽管第一个服务失败.

如果您执行单个命令链的测试,脚本退出代码将映射第一个失败的测试(如果没有测试失败,则映射最后一个成功的测试)

#!/bin/bash

cd ./services/service-1 && npm run test \ 
  && cd ../service-2 && npm run test \ 
  && cd ../service-3 && npm run test