You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Jest测试React项目中Next.js Router.push的options参数

问题根因
  • 你当前的断言只匹配了push方法的第一个入参,但实际业务代码调用push时一共传了3个参数:路由配置对象、undefined、{scroll: false},入参数量不匹配导致断言失败
  • 报错信息显示实际调用时传入的query是空对象,说明你在测试中触发handleFilter方法时,没有正确传入预期的items参数
修复步骤
  1. 首先确认测试用例中触发逻辑的传参正确
    检查你触发筛选逻辑的代码,确保调用handleFilter时传入了预期的参数:{ platforms: ['windows', 'linux'], sort_by: 'low-to-high' },同时确认你代码中按钮绑定的handleShowMore方法内部调用handleFilter时传值无误,不要传入空对象。

  2. 修改断言匹配完整入参
    你可以选择完整匹配所有入参,写法如下:

expect(push).toHaveBeenCalledWith(
  {
    pathname: '/games',
    query: { platforms: ['windows', 'linux'], sort_by: 'low-to-high' },
  },
  undefined,
  { scroll: false }
);

如果你不需要校验后两个参数,也可以用expect.anything()忽略不需要校验的部分:

expect(push).toHaveBeenCalledWith(
  {
    pathname: '/games',
    query: { platforms: ['windows', 'linux'], sort_by: 'low-to-high' },
  },
  expect.anything(),
  expect.anything()
);

内容的提问来源于stack exchange,提问作者Arthur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 21:36:00