首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

测试中如何处理 Http 请求?

特别是一些测试中,我们要假定后端要返回的内容的时候,就不得不在所有地方都要 Mock 一次。在这种情况下,就会给你和要做测试的东西设置了很多障碍。...msw msw 全称 “Mock Service Worker”。 现在 Service Worker 还只是浏览器中的功能,不能在 Node 端使用。...但是,msw 可以支持 Node 端所有测试场景。 它的工作原理是这样的:创建一个 Mock Server 来拦截所有的请求,然后你就可以像是真的 Server 里去处理请求。...' import {setupServer} from 'msw/node' import {handlers} from '....msw 不仅可以测试中拦截请求,实现集成、E2E 测试,还可以在前端开发来 Mock 数据,确实是一个有趣的实践。 最近也给我们项目写不少单测,其实单测和集成测试还是有很多互补的地方的。

1.2K10
您找到你想要的搜索结果了吗?
是的
没有找到

使用 React Testing Library 的 15 个常见错误

DOM Testing Library v6.11.0 引入的 (就就是说,你可以 @testing-library/react@>=9 这些版本中使用它)。...直接在 render 引入的时候一并引入就可以了: import {render, screen} from '@testing-library/react' 使用 screen 的好处是:添加/删除...DOM Query ,不需要实时地解构 render 的返回值来获取内容。...这是很重要的,因为类似 get* 和 find* 相关的 API 找不到元素都会自动抛出异常 —— 这样你就可以看到渲染的内容以及为什么找不到元素的原因。...建议:当查询那些不能立马能访问到的元素,使用 find* 给 waitFor 传空 callback 重要程度:高 // ❌ await waitFor(() => {}) expect(window.fetch

1.2K20

前端测试一共有哪几种?

静态测试:捕获写代码的错别字和类型错误 在这个模型里,每个测试分类的大小和你测试的关注度呈正相关(通常来说)。下面我来深入地聊聊这几种测试类型的区别、含义、以及如何对它们做优化。...{setupServer} from 'msw/node' import {handlers} from 'test/server-handlers' import App from '.....你可以 React Testing Library setup docs 里了解更多关于上面的测试工具函数。...单元测试 import '@testing-library/jest-dom/extend-expect' import * as React from 'react' // 如果你的集成测试里有像上面一样的测试工具模块...// 那别用 @testing-library/react,直接用你的就好了 import {render, screen} from '@testing-library/react' import

54120

React 应用架构实战 0x4:模拟 API

通过模拟 AIP 可以获得很多好处: 开发过程中独立于外部服务 web 应用通常由许多不同部分组成,例如前端、后端、外部第三方 API 等 开发前端,我们希望尽可能自治,而不会被某些不可用的系统部分阻塞...# 服务器 服务器版本主要用于运行自动化测试,因为我们的测试运行程序 Node 环境而不是浏览器中运行。...服务器版本也适用于服务器上执行的 API 调用,这在我们的应用程序进行服务器端渲染非常有用。...// src/testing/mocks/server.ts import { setupServer } from "msw/node"; import { handlers } from "....正如先前提到的,MSW 中的处理程序是一个函数,如果定义了它,它将拦截任何匹配的请求,不会将请求发送到网络,而是修改它们并返回模拟的响应。

38830

如何做到修改node_module中的包,却不受重新安装的影响

作者:KDDA_ 链接:https://juejin.cn/post/6955736879106883597 背景 我们常常会遇到一个问题,网上现有的开源插件并不能满足我们实际项目的预期。...my-app npm start 给项目@alifd/next(ui库)、patch-package、postinstall-postinstall(使用yarn安装需要安装,npm无需安装此依赖)...文件名中的1.22.21就是依赖包的版本号,表示这个补丁只对1.22.21版本的插件生效 patch.png 测试 删除node_module并重新安装 rm -rf node_modules/ &&...yarn 依赖包安装完成后可以命令行中看到补丁被应用(倒数后5行) [1/4] Resolving packages... [2/4] Fetching packages... [3/4]..."@testing-library/dom@>=7.21.4". warning "react-scripts > @typescript-eslint/eslint-plugin > tsutils@

2K10

JavaScript测试教程–part 4:模拟 API 调用和模拟 React 组件交互

正文共:1822 字 预计阅读时间:6 分钟 作者:Marcin Wanago 翻译:疯狂的技术宅 来源:wanago.io ? 1....spyOn 函数返回一个 mock函数。有关其功能的完整列表,请阅读文档。我们的测试检查组件渲染和运行之后是否从模拟中调用 get函数,并成功执行。...组件的交互 之前的文章中,我们提到了阅读组件的状态或属性,但这是实际与之交互。...所有结果的数组函数,通过它我们可以得到返回的 promise: value 属性中可用。...从测试中返回 promise 是能够确保 Jest 等待其解决的一种方法。 总结 本文中,我们介绍了模拟模块,并将其用于伪造 API 调用。由于没有发出实际的请求要求,我们的测试可以更可靠、更快。

3.7K10

如何测试 React 路由 ?

前言 本文承接上文 如何测试 React 异步组件?,这次我将继续使用 @testing-library/react 来测试我们的 React 应用,并简要简要说明如何测试路由系统。...测试方法 我们知道 @testing-library/react 是运行在 node 环境中的,但浏览器中并没有 HashRouter 或者 BrowserRouter ,所以我们需要一个用到 MemoryRouter.../react' import userEvent from '@testing-library/user-event' import { createMemoryHistory } from 'history...initialEntries={["/users/mjackson"]} 配置初始化路由 第二个参数 initialIndex 默认是 initialEntries 中的最后一个值 测试 404 页面 test('测试路由匹配...请关注我,我会尽快出 React test 系列的下文。 希望这篇文章对大家有所帮助,也可以参考我往期的文章或者评论区交流你的想法和心得,欢迎一起探索前端。

2.1K20

如何测试 React 路由 ?

前言 本文承接上文 如何测试 React 异步组件?,这次我将继续使用 @testing-library/react 来测试我们的 React 应用,并简要简要说明如何测试路由系统。...测试方法 我们知道 @testing-library/react 是运行在 node 环境中的,但浏览器中并没有 HashRouter 或者 BrowserRouter ,所以我们需要一个用到 MemoryRouter.../react"; import userEvent from "@testing-library/user-event"; import { createMemoryHistory } from "history...initialEntries={["/users/mjackson"]} 配置初始化路由 第二个参数 initialIndex 默认是 initialEntries 中的最后一个值 测试 404 页面 test('测试路由匹配...请关注我,我会尽快出 React test 系列的下文。 希望这篇文章对大家有所帮助,也可以参考我往期的文章或者评论区交流你的想法和心得,欢迎一起探索前端。

2.1K20

用Jest来给React完成一次妙不可言的~单元测试

这将用作查询的基本元素,以及使用debug()打印的内容。•hydrate:用于服务端渲染,使用 ReactDOM.hydrate 加载你的组件。...•queryAllBy:返回一个查询的所有匹配节点的数组,如果没有匹配的元素,则返回一个空数组([])。•findBy:返回一个promise,该promise将在找到与给定查询匹配的元素解析。...当我们点击按钮,测试计数器的增减是否正确: import React from 'react'; import "@testing-library/jest-dom/extend-expect"; import...这样,我们现在就可以测试开始加载的页面是否是主页。以及导航栏是否加载了预期的链接。...对于第一个测试,我们只检查加载消息没有数据要显示是否显示。 也就是说,我们现在已经完成了八个简单的步骤来测试你的React应用程序。

14.8K33

2022年3月最新Eslint + Prettier + Husky + Stylelint + Jest + CICD 超详细前端单元测试&规范工程化工作流

no-descending-specificity": null } } 由于项目启用了scss,需要额外配置 pnpm i -D postcss postcss-scss 2.2 git规范 git规范对于团队开发是非常有利的,版本出现问题可以清晰的定位...jest.setup.js,内容可以暂时为空 编写第一个React测试用例 with 「ReactTestingLibrary」 安装依赖包 pnpm i -D @testing-library/jest-dom...@testing-library/react jest.setup.js写入全局配置 import '@testing-library/jest-dom'; 写第一个测试用例: // home.test.tsx.../pages/index"; import React from 'react' import { render, screen } from '@testing-library/react' it(...-… 」 建议有问题还是啃文档吧 再补上一些有用的教程 「juejin.cn/post/703910… 」 4 持续集成/持续部署CI/CD 目前已知CI/CD一般要用到Docker/k8s Jenkins

1.8K10

React报错之useNavigate() may be used only in context of Router

Hadzhiev[2] 正文从这开始~ 总览 当我们尝试react router的Router上下文外部使用useNavigate 钩子时,会产生"useNavigate() may be used...usenavigate-may-be-used-only-in-the-context-of-router.png 下面是一个index.js文件中将React应用包裹到Router中的例子。...一旦你的整个应用都被Router组件所包裹,你可以随时随地的组件中使用react router所提供的钩子。 Jest 如果你使用Jest测试库遇到错误,解决办法也是一样的。...// App.test.js import {render} from '@testing-library/react'; import App from '....Router>, ); // your tests... }); useNavigate钩子返回一个函数,让我们以编程方式进行路由跳转,例如在一个表单提交后。

3.2K20

前端架构思考,Vue or React?领域设计、文件结构、数据管理、主题替换

从 Vue 和 React 看问题 Vue 的优势 内置的 vite 构建工具,减少构建时间,提高开发效率,大工程上特别明显 结构、样式、功能分开的设计,再通过 setup 做 crud 的分隔,整个页面维度的逻辑会特别清晰...没有企业包袱的角度来看,大厂都是 react 为先, 我更加推荐使用 vue,原因如下 大神没那么多,就大部分场景 95%,vue 都可以很好的覆盖 天生的结构、样式、逻辑相分离,各自的职责界限已经很明显了...mock 和页面一样多的数据,我们应该考虑单测的覆盖维度就是页面级别的 个人喜好:test 跟着 components 或者 views,这种方式比放在最外层会好很多!...所以我们开发,如果可以有一个主题包如果可以的组件库相结合是最好的,类似 antd 和 elmentui 一样,需要更换主题的时候,升级包版本就欧了 其他方式 利用媒体查询, media_type...-20: https://juejin.cn/post/6907052045262389255#heading-20 [8] https://blog.mimacom.com/react-testing-library-fireevent-vs-userevent

27830
领券