Jest error: Type error: res.status is not a funtion

Jest error: Type error: res.status is not a funtion

我正在使用中间件通过以下代码验证令牌:

import { Request, Response, NextFunction } from "express";
import jwt from "jsonwebtoken";

class VerifyToken {
    public verify(req: Request, res: Response, next: NextFunction) {
        try {
            const authHeader = req.headers["authorization"];
            const token = authHeader?.split(" ")[1];

            const signature = process.env.JWT_SIGNATURE;
            jwt.verify(token, signature);

            next();
        } catch (error) {
            return res.status(401).json("Acess denied");
        }
    }
}

export default new VerifyToken().verify;

我正在使用 Jest 来测试这个中间件,代码如下:

import dotenv from "dotenv";
import { NextFunction, Request, Response } from "express";
import verifyToken from "../../src/middlewares/verifyToken";

describe("Verify token", () => {
    let mockRequest: Partial<Request>;
    let mockResponse: Partial<Response>;
    let nextFunction: NextFunction = jest.fn();

    beforeAll(() => {
        dotenv.config({ path: ".env" });
    });

    beforeEach(() => {
        mockRequest = {};
        mockResponse = {
            json: jest.fn(),
        };
    });

    it("should verify token with a invalid token", () => {
        const token = process.env.TEST_FALSE_TOKEN;

        mockRequest = {
            headers: {
                authorization: `bearer ${token}`,
            },
        };

        verifyToken(mockRequest as Request, mockResponse as Response, nextFunction);

        expect(mockResponse.status).toBe(401);
    });

    it("should verify token with a valid token", () => {
        const token = process.env.TEST_TOKEN;

        mockRequest = {
            headers: {
                authorization: `bearer ${token}`,
            },
        };

        verifyToken(mockRequest as Request, mockResponse as Response, nextFunction);

        expect(nextFunction).toBeCalledTimes(1);
    });
});

当我 运行 使用 Jest 进行测试时,他显示以下错误:

TypeError: res.status is not a function

我已经尝试对请求使用 ErrorRequestHandler,但发生了同样的错误。

我该如何解决这个问题?感谢您的帮助。

您的模拟回复没有 status 功能..

mockResponse = {
  json: jest.fn(),
  status: jest.fn().mockReturnThis(),
};