mockReturnValue 是 Jest 中为已创建的 Mock 函数设置固定返回值的方法,只影响后续调用;它等价于 mockImplementation(() => value),但更简洁,支持与 mockReturnValueOnce 组合实现多阶段返回,且不修改已有调用记录。

mockReturnValue 是 Jest 中用于为 已创建的 Mock 函数 设置固定返回值的方法,它只影响后续调用,不改变已有调用行为。
基本用法:直接设置返回值
调用 mockReturnValue(value) 后,该 Mock 函数每次执行都会返回你指定的 value(无论参数是什么):
- 适用于不需要区分入参、只需统一返回结果的场景
- 常配合
jest.fn()创建的函数使用
示例:
const mockFn = jest.fn();
mockFn.mockReturnValue('hello');
console.log(mockFn()); // 'hello'
console.log(mockFn(1, 2)); // 'hello'
console.log(mockFn('a')); // 'hello'
与 mockImplementation 的区别
mockReturnValue 是语法糖,底层等价于 mockImplementation(() => value),但更简洁明确:
-
mockReturnValue(42)→ 每次都返回字面量42 -
mockImplementation(() => 42)→ 效果相同,但写法更冗长 - 若需根据参数动态返回,必须用
mockImplementation或mockReturnValueOnce
配合 mockReturnValueOnce 实现多阶段返回
当需要前几次调用返回不同值,之后统一返回某个值时,可组合使用:
-
mockReturnValueOnce('first'):仅第一次调用返回该值 -
mockReturnValue('default'):后续所有调用都返回该值
示例:
const mockFn = jest.fn(); mockFn.mockReturnValueOnce(10).mockReturnValue(99); console.log(mockFn()); // 10 console.log(mockFn()); // 99 console.log(mockFn()); // 99
注意:mockReturnValue 不影响已发生的调用
它只对 设置之后的调用 生效。如果函数已在之前被调用过,那些调用记录和返回值不会被覆盖或修改:
- Mock 函数的调用历史(
mock.calls)和返回值历史(mock.results)保持不变 - 想重置状态,可用
mockFn.mockClear()或mockFn.mockReset()


















