最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

Mocha测试表达异步中间件不起作用

运维笔记admin8浏览0评论

Mocha测试表达异步中间件不起作用

Mocha测试表达异步中间件不起作用

我正在尝试使用Mocha的done函数来测试异步中间件auth函数。但是,似乎在异步调用中调用完函数之前,测试已完成。测试不是应该等到完成的回调被调用吗?

中间件:

const AuthMiddleware = (req: Request, res: Response, next: NextFunction) => {
    const token = getToken(req)

    if (token === undefined) {
        res.status(401)
        next()
    }

    jwt.verify(token, getSigningKey, (err, decodedToken) => {
        if (err) {
            res.status(401)
            next()
        }
    })
}

我的测试:

describe("AuthMiddleware", () => {
    it("Should return 401 if token is expired", (done) => {
        const options = { headers: { authorization: "Bearer " + expiredToken } }
        const req = mockReq(options) as Request
        const res = mockRes() as Response

        AuthMiddleware(req, res, done)
        expect(res.status).to.have.been.calledWith(401)
    }).timeout(10000)
})
回答如下:

您将done()视为next()。完成用于结束测试,而下一步则用于中间件

describe("AuthMiddleware", () => {
it("Should return 401 if token is expired",async (done) => {
    const options = { headers: { authorization: "Bearer " + expiredToken } }
    const req = mockReq(options) as Request
    const res = mockRes() as Response

    await AuthMiddleware(req, res, done)
    expect(res.status).to.have.been.calledWith(401)
}).timeout(10000)

})

发布评论

评论列表(0)

  1. 暂无评论