NodeJS 如何知道所有的测试已经通过与摩卡

waxmsbnn  于 2023-06-29  发布在  Node.js
关注(0)|答案(1)|浏览(130)

我想知道如果我所有的测试文件都通过了mocha,是否有可能执行一些东西。下面:是我的index.js文件,它是由mocha运行的(为了得到我想要的顺序)

require('dotenv').config();
const logger = require('../toolkits/logger');

//silent mode for testing
logger.transports.forEach((t) => (t.silent = true));

require("./broker.test");
require("./mongo.test");
require("./auth.test");
require("./meal.test");
require("./bowl.test");

如果测试通过了,我想要process.exit(0)(将其集成到gitlab CI中)。
我成功地检查了一个测试是否没有通过,方法是:

afterEach(function(){
   if (this.currentTest.state === "failed")
        process.exit(1);
})

但我无法检测是否所有测试都通过了。我不能在要求所有测试之后只执行process.exit(0),因为其中一些测试是异步的。你知道我该怎么做吗

!更新!

我发现在npm中运行mocha时可以传递--exit参数:
mocha file --exit

xzabzqsa

xzabzqsa1#

这就是我如何使用Cypress(构建在Mocha之上)来实现这一点。我相信这对你来说都是可行的,除了cy.state('runnable')--如果你不使用Cypress,你可能需要一种不同的方法来让mocha运行。

function isInErrorState(): boolean {
    const runnable = cy.state('runnable') as Mocha.Runnable;
    if (runnable.parent !== undefined) {
        const { parent: { tests } } = runnable;
        return tests.some((test) => test.state === 'failed');
    }
    return false;
}

相关问题