小编Nat*_*abe的帖子

Jest Express 使用参数测试中间件

我对 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)

unit-testing middleware node.js express jestjs

7
推荐指数
1
解决办法
7584
查看次数

标签 统计

express ×1

jestjs ×1

middleware ×1

node.js ×1

unit-testing ×1