如何为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
相关产品推荐
相关产品推荐

