我如何使用 Mocha 和 Chai 对 Node 创建的端点进行异步测试?

Posted

技术标签:

【中文标题】我如何使用 Mocha 和 Chai 对 Node 创建的端点进行异步测试?【英文标题】:How i can use Mocha and Chai to make an Async Test for Endpoints created by Node? 【发布时间】:2021-06-14 22:30:20 【问题描述】:
describe('Notifications API', ()=>

    /*Getting All Notification*/
    describe('getNotifications', ()=>
      it('it should GET all the notifications', async () => 
          const result = await chai.request(app).get('/getNotifications');
          result.should.have.status(200);
        );
    );
)

【问题讨论】:

我收到此错误消息“错误:超过 2000 毫秒的超时。对于异步测试和挂钩,请确保调用了“done()”;如果返回 Promise,请确保它解决了)" 【参考方案1】:

您可以这样做以不使用async/await

describe('Notifications API', () => 
    /*Getting All Notification*/
    describe('getNotifications', () => 
        it('it should GET all the notifications', (done) => 
            chai.request(app)
                .get('/getNotifications').then(result => 
                    result.should.have.status(200);
                    done()
                ).catch(e => 
                    done(e)
                )
        );
    );

)

我还使用await 测试了您的代码,它可以正常工作。

it('Prueba', async () => 
    const result = await chai.request('https://***.com').get('/');
    return result.should.have.status(200);
  )

确保您的 API 在 2 秒内返回数据并添加 return(尽管并非绝对必要)。

作为提示:不要将您的路径称为getNotifications,仅使用/notifications 更有意义。你使用的动词表示你想做什么,而不是路径。

您在请愿书中使用了get 动词,因此将get 添加到路径中是多余的。

【讨论】:

以上是关于我如何使用 Mocha 和 Chai 对 Node 创建的端点进行异步测试?的主要内容,如果未能解决你的问题,请参考以下文章

Node Express Mocha 测试:TypeError: chai.request is not a function

在我的 node.js 应用程序中使用 mongodb 和 mongoose 在 Mocha 和 Chai 上运行测试后无法清除数据库

在我的 node.js 应用程序中使用 mongodb 和 mongoose 在 Mocha 和 Chai 上运行测试后无法清除数据库

sh Mocha Chai Node-TS NPM安装

[Node.js] Test Node RESTful API with Mocha and Chai

如何使用 mongoose、mocha 和 chai 编写用于向 mongodb 插入和检索对象的单元测试?