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

【译】使用Enzyme和React Testing Library测试React Hooks

我们将介绍使用Enzyme和React Testing Library编写测试,这两个都能做到这一点。...浅渲染允许我们检查组件渲染方法是否调用——这是我们想要确认,因为这里我们需要证明组件渲染。...我们使用断言,在进一步模拟单击事件之前,输入“修复失败测试”,该事件应该将新项目添加到待办事项列表中。 最后,断言列表中有三个项,并且第三个项与我们创建项相等。...这将调用removeTodo()方法,该方法将删除被单击item。然后检查我们拥有的item数量,并且返回值。 这四个测试源代码可以在GitHub上找到。...为了模拟添加新待办项单击事件,我们使用fireEvent.click()方法并传入getByText()方法,该方法返回是文本与我们传参数匹配节点。

4K30

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

JavaScript测试教程–part 4:模拟 API 调用和模拟 React 组件交互 今天,我们进一步测试 React 组件。它涉及模拟组件交互和模拟 API 调用。你将学到两种方法,开始吧!...模拟 对于我们程序来说,从 API 获取一些数据是很常见。但是它可能由于各种原因而失败,例如 API 关闭。我们希望测试可靠且独立,并确保可以模拟某些模块。...此类模拟文件在 _ mocks _ 目录中定义,在该目录中,文件名视为模拟模块名称。...为了更进一步,让我们测试一下用户单击按钮后是否从组件发送了实际请求。...从测试中返回 promise 是能够确保 Jest 等待其解决一种方法。 总结 在本文中,我们介绍了模拟模块,并将其用于伪造 API 调用。由于没有发出实际请求要求,我们测试可以更可靠、更快。

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

JavaScript 测试系列实战(三):使用 Mock 模拟模块并处理组件交互

在这篇教程中,我们将学习如何测试更复杂组件,包括用 Mock 去编写涉及外部 API 测试,以及通过 Enzyme 来轻松模拟组件交互 初次尝试 Jest Mock 我们应用程序通常需要从外部...在编写测试,外部 API 可能由于各种原因而失败。我们希望我们测试是可靠和独立,而最常见解决方案就是 Mock。...编写 axios 模块 mock 文件 Jest 支持对整个模块进行 Mock,使得组件不会调用原始模块,而是调用我们预设 Mock 模块。...为了进一步说明问题,让我们测试一下用户单击按钮后是否从我们组件发送了实际 post 请求。...从测试返回 promise 是确保 Jest 等待其异步方法执行结束一种方法。 小结 在本文中,我们介绍了 mock 模块,并将其用于伪造API调用。

4.7K20

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

触发DOM事件,如单击、焦点、更改等。您可以在这里找到许多其他可以调度事件。...触发事件通常会触发应用程序中一些更改,因此我们必须执行一些断言来确保这些更改发生。在我们测试中,这样做一个好方法是确保呈现给用户计数已经更改。...测试当我们点击链接,它是否用参数导航到其他页面: 现在,要检查导航是否工作,我们必须触发导航链接上单击事件。...为此,我们必须在jest.mock('axios')帮助下模拟axios请求。 现在,我们可以使用axiosMock并对其应用get()方法。...最后,我们将使用Jest函数mockResolvedValueOnce()来传递模拟数据作为参数。 现在,对于第二个测试,我们可以单击按钮来获取数据并使用async/await来解析它。

14.8K33

40道ReactJS 面试问题及答案

setState() 是一个异步操作,当你直接更新状态,React 不会检测到发生了变化,因为它不会触发重新渲染过程。这可能会导致您 UI 无法反映更新后状态,从而导致难以调试不一致和错误。...以下是测试 React 应用程序一些常用方法: 单元测试:使用 Jest测试框架以及 Enzyme 或 React 测试等工具为各个组件编写单元测试。...您可以使用 Jest 和 React 测试等工具来模拟用户交互并测试应用程序整体行为。...模拟:使用 Jest 等工具来模拟外部依赖项(例如 API 调用),以隔离您正在测试代码并使您测试更具可预测性。...使用 Jest、React 测试、Enzyme 或 Cypress 等测试来编写和运行测试。 遵循测试 React 组件最佳实践,例如关注用户交互、测试边缘情况和模拟依赖项。

18510

使用Firefox开发工具做性能审计

您还可以使用此工具监视和挑选那些正在减慢或阻塞web页面快速加载请求。当主事件触发,网络面板显示(DOMContentLoaded和load)。...DevTools标记报表中主要生命周期事件,如DOMContentLoaded和page load。蓝色表示事件DOMContentLoaded触发时间;紫色线表示启动页面加载事件时间。 ?...当HTML文档和所有相关样式表、图像和frames完全加载,事件负载就会触发。...您还可以使用Disable Cache设置来模拟在任何选项卡上打开DevTools首次加载web页面的情况。...(这些任务确实是异步执行,但是JavaScripta- synchronity是不同:它是通过使用事件驱动方法、事件循环和队列来模拟。)

3.4K40

如何测试驱动开发 React 组件?

什么是 TDD TDD(Test-driven development),就是测试驱动开发,是敏捷开发中一项核心实践和技术,也是一种软件设计方法论。...Confirmation 组件特点: Confirmation 标题 确认描述 —— 接收外部程序想要确认问题 一个确认按钮,支持外部回调函数 一个取消按钮,支持外部回调函数 这两个按钮都不知道点击接下来要做什么事...首先通过 getByRole 方法 查找 role属性等于dialog能否文档中找到。 role 属性可能不太常用, 当现有的 HTML 标签不能充分表达语义性时候,就可以借助 role 来说明....现在我们得到了我们想要组件渲染 HTML ,现在我想要确保我可以从外部传递这个组件按钮回调函数,并确保它们在单击按钮调用。...创建一个模拟函数,将其作为“onOk”处理函数传递给组件,模拟单击“确认”按钮,并断言函数已被调用。

2.2K10

如何测试驱动开发 React 组件?

什么是TDD TDD(Test-driven development),就是测试驱动开发,是敏捷开发中一项核心实践和技术,也是一种软件设计方法论。...Confirmation 组件特点: Confirmation 标题 确认描述 —— 接收外部程序想要确认问题 一个确认按钮,支持外部回调函数 一个取消按钮,支持外部回调函数 这两个按钮都不知道点击接下来要做什么事...首先通过 getByRole 方法 查找 role属性等于dialog能否文档中找到。 role 属性可能不太常用, 当现有的HTML标签不能充分表达语义性时候,就可以借助role来说明....现在我们得到了我们想要组件渲染 HTML ,现在我想要确保我可以从外部传递这个组件按钮回调函数,并确保它们在单击按钮调用。...创建一个模拟函数,将其作为“onOk”处理函数传递给组件,模拟单击“确认”按钮,并断言函数已被调用。

2.1K10

Vuex 之单元测试

一个替代方法是引入有着真正 getters 真实 Vuex store。这将引入测试另一项依赖,当开发一个大系统,Vuex store 可能由另一位程序员开发,也可能尚未实现。...另一种替代方法 mock store 需要代码更少。让我们来看看如何以那种方式编写一个测试并断言 testAction dispatch 了。...没有 localVue、没有 Vuex -- 不同于在前一个测试中我们用 testMutation: jest.fn() mock 掉了 commit 后会触发函数,这次我们实际上 mock 了 dispatch...总结 mutations 和 getters 都只是普通 JavaScript 函数,它们可以、也应该,区别于主 Vue 应用而单独地测试 当单独地测试 getters ,你需要手动传入 state...这将给我们对测试更细粒度控制,并让你聚焦于测试 getter 测试一个 action ,可以使用 Jest ES6 class mocks,并应该同时测试其成功和失败情况 可以使用 createLocalVue

3.3K20

JavaScript 开发者需要了解15个 DevTools 技巧

查找未使用 JavaScript Chrome Coverage 面板可以让你能够快速找到 JavaScript 有没有使用。...单击任何 JavaScript 文件,未使用代码会用红条突出显示。 5. 找到DOM更改代码 当事件触发,很难确定哪个函数负责更新特定 HTML DOM 元素。...DOM 中被删除 发生此类事件,将在 Sources 面板中自动触发断点。...调试一些三方(React, Vue.js, jQuery等)或第三方脚本中问题通常都没什么用,你也不能改这些。...断点有的时候并不好用,例如,如果在运行 1000 次循环最后一次循环报错了。这时你可以添加一个条件断点,让它仅在满足特定条件触发断点,例如 i > 999 。

4.7K20

你需要了解前端测试“金字塔”

,Modal 调用 toggleModal 单击删除按钮,Modal 会调用 toggleModal 当 button 点击,button 调用 toggleModal 我们测试将浅渲染组件,然后检查每一项规格工作...快照测试 快照测试测试渲染组件图片,并将其与组件以前图片进行比较。 用 JavaScript 编写快照测试最好方法是使用 Jest 。...每次运行单元测试,都会重新生成一个快照,并将其与之前快照进行比较。 如果代码改变,Jest 会抛出一个错误,并警告标记已经改变。 然后开发者可以手动检查没有类误删情况。...在下面的测试中,有人从中删除了 modal-card-foot 类。 快照测试是一种检查组件样式或标记方法。 如果快照测试通过,我们知道代码更改不会影响组件显示。...对 JavaScript 应用程序来说有几种方法可以编写端到端测试。像 test cafe 这样程序会记录您在浏览器中执行操作并将其作为测试源重播。

1.6K80

JavaScript 测试教程 part 1:用 Jest 进行单元测试

本文是 JavaScript 测试教程 系列中第1部分 1. JavaScript测试教程-part 1:用 Jest 进行单元测试 2....JavaScript测试教程–part 4:模拟 API 调用和模拟 React 组件交互 有多种不同种类测试,我会首先解释其中一部分。...测试类型 测试是用来检查你代码代码。测试会使你对自己程序更有信心。它们还能够防止你在修复一个 bug 生成另一个 bug。...多亏了他,你可以用一种方法来确保你代码在整体上能够正常运行。 端到端测试(E2E) 与其他类型测试相反,端到端测试始终在浏览器(或类似浏览器)环境中运行。...他们将模拟滚动,单击和键入之类行为,并从实际用户角度检查我们程序是否运行良好。 用 Jest 进行单元测试 Jest 是 Facebook 开发测试框架。

2.8K20

Jest与React Testing Library:前端测试最佳实践

Jest 是一个功能丰富JavaScript测试框架,而React Testing Library 是一种提倡以用户角度编写测试,它鼓励测试组件行为而不是内部实现细节。...模拟(Mocking)Jest 提供了强大模拟功能,可以模拟组件依赖,例如API调用。...'Loading...')).toBeInTheDocument();});组件测试对于复杂组件,可以创建一个setupTests.js文件来设置全局模拟和配置,例如:import '@testing-library.../myFunction';jest.spyOn(myModule, 'myFunction');// 在测试中调用函数myFunction();// 检查函数是否调用expect(myFunction...act包裹组件生命周期方法,确保它们在测试环境中正确执行:import { act } from 'react-dom/test-utils';it('calls componentDidMount'

7500

jQuery 双击事件(dblclick),不触发单击事件(click)

出处:jQuery 双击事件(dblclick),不触发单击事件(click) 在jQuery事件绑定中,执行双击事件(dblclick)触发两次单击事件(click)。...即一个标签元素(如div等),如果元素同时绑定了单击事件(click)和双击事件(dblclick),那么执行单击事件(click)不会触发双击事件(dblclick), 执行双击事件(dblclick...)却会触发两次单击事件(click)。...mouseout,click,dblclick; 在双击事件(dblclick),触发两次单击事件(click)中,第一次单击事件(click)会被屏蔽掉,但第二次不会。...}) 从测试结果来看,如果前后两次点击时间在 300ms 左右时候,还是很容易出现 click 和 dblclick 事件“同时”调用情况,而如果间隔时间更短或更长,则只会有 click 或

5.1K30

3、React组件中this

JavaScript函数中this 我们都知道JavaScript函数中this不是在函数声明时候定义,而是在函数调用(即运行)时候定义 var student = { func:...这段代码形象验证了,JavaScript函数中this不是在函数声明时候,而是在函数运行时候定义; 同样,React组件也遵循JavaScript这种特性,所以组件方法‘调用者’不同会导致...this不同(这里 “调用者” 指的是函数执行时的当前对象) “调用者”不同导致this不同 测试:分别在组件自带生命周期函数以及自定义函数中打印this,并在render()方法中分别使用this.handler...,可以自动绑定所用方法,使得其this指向组件实例化对象,但是其他JavaScript类并没有这种特性; 所以React团队决定不再React组件类中实现自动绑定,把上下文转换自由权交给开发者;...所以我们通常在构造函数中绑定方法this指向: import React from 'react'; const STR = '调用,this指向:'; class App extends React.Component

2.9K10

深入理解JavaScript事件传播机制:事件冒泡和事件捕获

前言在JavaScript中,事件冒泡和事件捕获是两种不同事件传播方式。当一个事件触发,它会从最内层元素开始,然后逐级向外传播,直到最外层元素。...正文内容事件冒泡事件冒泡是指当一个事件触发,它会从最内层元素开始,然后逐级向外传播,直到最外层元素。在这个过程中,事件会经过每一个元素,直到它到达最外层元素。...这是因为事件从按钮开始向外传播,然后经过内部div和外部div,直到它到达文档最外层。事件捕获事件捕获是指当一个事件触发,它会从最外层元素开始,然后逐级向内传播,直到最内层元素。...事件冒泡从最内层元素开始向外传播,而事件捕获从最外层元素开始向内传播。这意味着当你单击一个按钮,事件冒泡会先触发按钮事件,然后是它父元素事件,以此类推,直到它到达文档最外层。...如何使用事件冒泡和事件捕获在JavaScript中,你可以使用addEventListener()方法来注册事件处理程序,并指定事件传播方式。

79121

使用 TypeScript 编写 React.js 应用 | 笔记

测试 通过以下步骤验证路由是否正常工作: 访问站点根目录: http://localhost:3000/ 并在浏览器中刷新页面 单击导航中 Projects 验证你是否带到 /projects...测试 通过以下步骤验证新路由是否正常工作: 访问站点根目录: http://localhost:3000/ 并在浏览器中刷新页面 单击导航中 Projects 验证你是否带到 /projects...路由和 ProjectsPage 显示 单击任何项目卡片中名称或描述 验证你是否带到 /projects/1 路由,并且 ProjectPage 显示 ProjectDetail 组件 image...yarn test image-20230625011407890 创建您第一个组件测试 创建文件 src\home\HomePage.test.tsx 添加测试以验证组件浅层渲染而不会崩溃 src...打开命令提示符或终端并运行以下命令,从 React 测试后面的核心测试中安装 user-event 。

72590

事件冒泡 ,阻止事件冒泡 e.stopPropagation()

在这里添加了e.stopPropagation();之后,“我是div”就不会弹出来了。因为已经阻止了。...在上面的函数中,先弹出 “我是li”然后弹出“我是ul”,最后弹出“我是div” 一层一层冒泡,而阻止冒泡方式就是调用 事件对象来调用stopPropagation()方法。...: 1.一个事件起泡对应触发是上层同一事件   单击two时候就会起泡触发one单击事件。...单机tree,会同时触发two,然后触发one 2.如果在click事件中,在你要处理事件之前加上e.preventDefault();  那么就取消了行为(通俗理解:相当于做了个return操作)...3.e.stopPropagation()只要在click事件中,就不会触发上层click事件。

2.2K30
领券