繁体   English   中英

项目不存在时的猫鼬find()方法。 开玩笑超时

[英]Mongoose find() when item doesn't exist. Jest times out

我的某些术语可能不正确,但请忍受...

我在Web应用程序中使用Mongoose,并且具有以下代码:

User.find(req.body, function(err, results) {

        if (err === null || results.length === 0) {
            console.log("Error! User does not exist");
            res.status(404);
        } else {
            // doing stuff here
        }
})

使用Jest,我想测试一个用户存在和不存在的情况。 对于每个单独的测试,都覆盖了预期的代码,但是当用户不存在时,该测试仍然会失败,因为:

“测试运行一秒钟后,开玩笑并没有退出。

这通常意味着您的测试中没有停止异步操作。 考虑使用--detectOpenHandles运行Jest来解决此问题。”

似乎find()不会终止或在找不到项目时出现某种情况,因此测试永远无法进行。 我什至尝试将catch块添加到find(),但是它不起作用。 我做了一些研究,看到了很多关于Promise和.then等的话题,但是我不确定如何解决我的问题。

我的目标是100%的代码覆盖率,因此,如果我可以测试这两种情况,那将是理想的选择。

测试如下:

it('Can Login a User', async() => {
    await supertest(server)
        .post('/api/user/login')
        .send(body)
        .set('Accept', 'application/json')
        .set('Content-Type', 'application/json')
        .expect(200)
});

it("Tries to login user who doesn't exist", async() => {
    await request
        .post('/api/user/login')
        .send(userDoesntExist)
        .set('Accept', 'application/json')
        .set('Content-Type', 'application/json')
        .expect(404)
});

谢谢。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM