当我使用 jest 和 supertest 测试 express 端点时,出现猫鼬缓冲超时错误

时间:2021-07-21 00:34:25

标签: node.js express mongoose jestjs supertest

我有一个带有此端点的 API,它返回对象的限制:

last: async (req, res, next) => {
        const limit = req.params.limit

        if (!validator.isEmpty(limit) && validator.isInt(limit)) {

            try {
                let result = await Article.find({}).limit(parseInt(limit)).sort('-_id')

                if (result && result.length < 1) {
                    return next(httpError(404, 'Not Found'))
                }

            } catch (err) {
                console.error(err)
                return next(httpError(500, 'Internal Server Error'))
            }

            return res.json({articles: result})

        } else {
            return next(httpError(400, 'Bad Request'))
        }
}

另一方面,我有一个关于 jest 和 supertest 的测试,

const app = require('../app')
const request = require('supertest')

describe('GET /api/article/last/:limit', () => {

        test('200 OK', async () => {
            const limit = 2;
            const response = await request(app).get(`/api/article/last/${limit}`)
                                    .expect(200)
                                    .expect('Content-Type', /json/)
        })
})

我确定数据库中有文档,因为当我使用 Postman 请求端点时,我得到了正确的结果。

当我启动测试时,它给了我这个错误。


    MongooseError: Operation `articles.find()` buffering timed out after 10000ms
    at Timeout.<anonymous> (/Users/Ivan/Sites/blog-app-js/backend/node_modules/mongoose/lib/drivers/node-mongodb-native/collection.js:197:23)
    at listOnTimeout (internal/timers.js:554:17)
    at processTimers (internal/timers.js:497:7)

我尝试了 this,但仍然出现相同的错误。

谁能知道是否有解决方案?

  • “猫鼬”:“^5.13.3”
  • npm v7.19.1

0 个答案:

没有答案