使用 mocha 和 chai 自动控制 return 并且最后一行不在单元测试用例中执行

control return automatically and last line not executing in unit test case using mocha and chai

我是 node.js 中使用 mocha 和 chai 进行单元测试的新手。 我卡在了control return自动不执行的问题 chai.expect(123).to.be.a("字符串");

代码在这里

it.only("should fetch status",()=>{
        return chai.request(server)
        .get("/user/status")
        .then((result)=>{
            let data = result.body;
            console.log("till here execute");

            //this line is not executed and test case is passed even when the below line expect to fail the test
            chai.expect(123).to.be.a("string");
            
        })
        .catch(err=>err);
    });

控制台显示上面的测试用例通过了我不知道如何以及为什么

chai.expect(123).to.be.a("string");

没有执行

这与您的catch有关。

基本上,当您的 chai.expect 失败时,它会抛出一个 AssertionError

在您给定的代码中,您正在返回捕获错误,而不是抛出它。

根据chai.js官方文档,在https://www.chaijs.com/plugins/chai-http/中发现,在处理promises时,catch里面必须throw捕获错误。

这样,改变:

.catch(err=>err);

至:

.catch(err => {throw err});