如何在5分钟内上手Jest Fetch Mock:从安装到第一个测试用例

发布时间:2026/9/26 19:32:10
如何在5分钟内上手Jest Fetch Mock:从安装到第一个测试用例 如何在5分钟内上手Jest Fetch Mock从安装到第一个测试用例【免费下载链接】jest-fetch-mockJest mock for fetch项目地址: https://gitcode.com/gh_mirrors/je/jest-fetch-mockJest Fetch Mock是一个专为Jest设计的fetch模拟工具每周在npm上的下载量约达140万次能帮助开发者轻松模拟HTTP请求快速编写可靠的测试用例。无论是前端还是Node.js环境它都能让你在不依赖真实网络的情况下测试API交互逻辑。 快速安装30秒完成配置1. 安装依赖包使用npm或yarn安装Jest Fetch Mock到开发依赖npm install --save-dev jest-fetch-mock2. 配置Jest两种方式任选方式一直接使用内置配置推荐在package.json中添加Jest配置jest: { setupFilesAfterEnv: [jest-fetch-mock/setup] }方式二自定义配置文件创建setupJest.js文件// setupJest.js require(jest-fetch-mock).enableMocks()然后在package.json中引用jest: { setupFilesAfterEnv: [./setupJest.js] }⚠️ 注意如果你的Jest配置中有resetMocks: true如Create React App默认设置请确保使用setupFilesAfterEnv而非setupFiles否则可能导致fetch模拟失效。✍️ 编写第一个测试用例3分钟上手假设我们有一个简单的API请求函数需要测试// api.js export async function fetchUserData(userId) { const response await fetch(https://api.example.com/users/${userId}); if (!response.ok) throw new Error(Failed to fetch user); return response.json(); }测试步骤创建测试文件api.test.js模拟API响应并断言结果验证请求参数是否正确// api.test.js import { fetchUserData } from ./api; describe(fetchUserData, () { // 每个测试前重置mock状态 beforeEach(() { fetch.resetMocks(); }); it(should return user data when request succeeds, async () { // 1. 模拟成功响应 const mockUserData { id: 1, name: John Doe }; fetch.mockResponseOnce(JSON.stringify(mockUserData), { status: 200 }); // 2. 执行测试函数 const result await fetchUserData(1); // 3. 断言结果 expect(result).toEqual(mockUserData); expect(fetch).toHaveBeenCalledWith(https://api.example.com/users/1); }); it(should throw error when request fails, async () { // 模拟失败响应 fetch.mockResponseOnce(, { status: 500 }); // 断言错误被抛出 await expect(fetchUserData(999)).rejects.toThrow(Failed to fetch user); }); }); 核心API速查表方法用途示例fetch.mockResponse(body, init)模拟所有fetch请求fetch.mockResponse({data: ok}, { status: 200 })fetch.mockResponseOnce(body, init)模拟单次fetch请求fetch.mockResponseOnce(not found, { status: 404 })fetch.mockReject(error)模拟请求失败fetch.mockReject(new Error(Network error))fetch.resetMocks()重置mock状态测试前必备beforeEach(() fetch.resetMocks())fetch.mock.calls获取请求历史记录expect(fetch.mock.calls[0][0]).toBe(/api/data) 新手常见问题解决Q: 为什么response.json()总是报错A:默认模拟响应体为空字符串而json()需要有效的JSON格式。解决方法// 至少返回空对象 fetch.mockResponse({}); // 或显式返回JSON fetch.mockResponse(JSON.stringify({ key: value }));Q: 如何模拟不同URL的响应A:使用函数式响应模拟fetch.mockResponse(async (req) { if (req.url.includes(/users)) { return JSON.stringify([{ id: 1 }]); } else if (req.url.includes(/posts)) { return JSON.stringify([{ title: Test }]); } return { status: 404, body: Not Found }; }); 进阶学习资源官方测试示例tests/test.js类型定义文件types/index.d.ts变更日志CHANGELOG.md通过以上步骤你已经掌握了Jest Fetch Mock的基本使用方法。这个工具不仅能帮你写出更可靠的测试还能让你在没有后端API的情况下进行前端开发极大提升开发效率现在就动手尝试为你的项目添加测试吧【免费下载链接】jest-fetch-mockJest mock for fetch项目地址: https://gitcode.com/gh_mirrors/je/jest-fetch-mock创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询