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

如何为Jest spyOn方法传递参数?仅传入productId参数

如何为Jest spyOn方法传递参数并根据参数返回不同值

你原来的mockReturnValue是固定返回true,要实现根据productId参数返回不同结果,改用mockImplementation就能搞定,它支持你定义一个带参数的回调函数,逻辑如下:

// 替换原有的mock调用
jest.spyOn(featureToggles, 'isEnabled').mockImplementation((productId) => {
  switch(productId) {
    case 2:
      return true;
    case 3:
      return false;
    // 其他productId的情况可以在这里补充默认返回值
    default:
      return false;
  }
});

也可以用if-else写法,逻辑完全一致:

jest.spyOn(featureToggles, 'isEnabled').mockImplementation((productId) => {
  if (productId === 2) {
    return true;
  } else if (productId === 3) {
    return false;
  }
  // 默认返回值,可按需调整
  return false;
});

核心逻辑说明:

  • mockImplementation的回调函数会接收原方法的入参(这里就是唯一的productId)
  • 在回调里根据参数值做判断,返回你需要的结果
  • 建议补充默认返回逻辑,避免未覆盖的参数调用导致返回undefined

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 21:35:20