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

如何在TypeScript中mock request-promise模块的get方法

TypeScript 环境下 mock request-promise get 方法的实现方案

以下是主流测试框架(以 Jest 为例)下的实现步骤:

方案1:单测试文件内局部 mock

  • 首先在测试文件顶部声明 mock 整个request-promise模块,再导入get方法
  • 对导入的get方法做类型断言,解决 TypeScript 类型校验报错
  • 在测试用例中自定义返回值、验证调用逻辑即可

代码示例:

// 声明 mock 整个 request-promise 模块
jest.mock('request-promise')
import { get } from 'request-promise'

// 类型断言,将 get 标记为 Jest 的 mock 函数类型
const mockGet = get as jest.MockedFunction<typeof get>

// 测试用例
test('测试业务逻辑中 get 请求调用', async () => {
  // 模拟 get 请求成功返回
  mockGet.mockResolvedValue({
    code: 200,
    data: 'mock 返回的业务数据'
  })

  // 调用你自己的业务方法(内部依赖 request-promise 的 get)
  const res = await yourBusinessFn()

  // 校验 get 方法调用参数符合预期
  expect(mockGet).toHaveBeenCalledWith('https://your-target-api.com/path')
  // 校验业务返回结果符合预期
  expect(res).toEqual('预期的业务结果')
})

方案2:全局手动 mock

如果多个测试文件都需要 mock request-promise,可使用 Jest 全局 mock 能力:

  1. 在项目根目录新建__mocks__/request-promise.ts文件,内容如下:
export const get = jest.fn().mockResolvedValue({
  // 可预置默认返回值
  code: 200,
  data: {}
})
// 其他你用到的 request-promise 方法可按相同规则 mock
  1. 测试文件中无需额外声明jest.mock('request-promise'),导入的get方法会自动使用 mock 版本,同样可以按方案1的方式做类型断言、自定义单用例的返回值。

常见场景扩展

  • 模拟请求失败:使用mockGet.mockRejectedValue(new Error('网络异常'))即可模拟请求抛出错误的场景
  • 多次调用返回不同结果:可使用mockGet.mockResolvedValueOnce(第一次返回值).mockResolvedValueOnce(第二次返回值)实现多请求不同返回的 mock

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 03:18:01