我对 Node 还很陌生,这是我第一次对应用程序进行单元测试。我在 Jest 方面做得很好,用 Jest 函数伪造请求,如下所示
// Create a fake request
const mockRequest = (sessionData, body) => ({
session: { data: sessionData },
body
});
// Create a fake response
const mockResponse = () => {
const res = {};
res.status = jest.fn().mockReturnValue(res);
res.json = jest.fn().mockReturnValue(res);
return res;
};
const mockNext = () => {
const next = jest.fn();
return next;
};
Run Code Online (Sandbox Code Playgroud)
所以我可以像下面这样使用它们
doSomething(req, res, next);
expect(res.status).toHaveBeenCalledWith(201);
//or
expect(next).toHaveBeenCalled();
Run Code Online (Sandbox Code Playgroud)
对于所有情况来说这已经足够了,直到我发现我的授权中间件包含几个参数,所以我无法传递虚假的 res 和 req ,如下所示
exports.isAllowedTo = (par1, par2) => …Run Code Online (Sandbox Code Playgroud)