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

React 组件测试技巧

在测试环境页面阅读更多关于设置测试环境的细节。 在这个页面上,我们将主要使用函数组件。然而,这些测试策略并不依赖于实现细节,它对于 class 组件也同样有效。...常见的方法是使用一对 beforeEach 和 afterEach 块,以便它们一直运行,并隔离测试本身造成的影响: import { unmountComponentAtNode } from "react-dom...React 提供了一个名为 act() 的助手,它确保在进行任何断言之前,与这些“单元”相关的所有更新都已处理并应用于 DOM: act(() => { // 渲染组件 }); // 进行断言 这有助于使测试运行更接近真实用户在使用应用程序时的体验...这类测试包括实现细节,因此很容易中断,并且团队可能对快照中断不敏感。选择性地 mock 一些子组件可以帮助减小快照的大小,并使它们在代码评审中保持可读性。...--- 多渲染器 {#multiple-renderers} 在极少数情况下,你可能正在使用多个渲染器的组件上运行测试。

4.9K00

React组件方法中为什么要绑定this

ES5的写法是指使用React.createClass( )方法来定义组件,React在V16以上的新版本中已经移除了这个API,你可以通过阅读更早版本的源代码看到这个方法的细节。..._bindAutoBindMethods(); } 在老版本的React中,createClass()的定义中可以看到上面的代码,抛开其他复杂的逻辑,从方法名就可以看出这是一个自动绑定的方法,实际上在这个方法中所完成的...React构造方法中的bind会将响应函数与这个组件Component进行绑定以确保在这个处理函数中使用this时可以时刻指向这一组件的实例。 4....state这个属性,那么原型方法执行时,this.state会直接获取实例的state属性,如果构造其中没有初始化state这个属性(比如React中的UI组件),说明组件没有自身状态,此时即使调用原型方法似乎也没什么影响...} = toggleButton; 上例中解构赋值获取到的handleClick这个方法在执行时就会报错,Class的内部是强制运行在严格模式下的,此处的this在赋值中丢失了原有的指向,在运行时指向了

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

    如何测试 React 异步组件?

    前言 本文承接上文 如何测试驱动开发 React 组件?,这次我将继续使用 @testing-library/react 来测试我们的 React 应用,并简要简要说明如何测试异步组件。...如何测试(鼠标)事件发出的异步请求 ? ---- 对于异步组件,有两件步骤需要进行测试: 第一:测试异步方法本身有没有被调用,并且传了正确的参数。 第二:在调用之后,应用程序应该做出响应。...为了保证是一个纯组件,将提交方法onSubmit作为一个 props 传入,接下来我们实现下组件代码 import React from "react"; function Login({ onSubmit...相信经过登录的测试,我们在来写博客列表的测试已经不难了,我们先来写下测试用例: 接口请求中页面显示 loading 请求成功显示博客列表 列表为空显示暂无数据 请求失败显示服务端错误 博客列表代码 下面的代码中...: 通过 mock 使组件可以获取静态假数据; 测试加载状态; 测试异步方法是否被正确调用,并且带上了正确的参数; 测试组件是否正确地渲染了数据 测试异步方法错误时,组件是是否渲染了正确的状态 文中关于登录成功后页面跳转并未测试

    3.3K50

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

    什么是TDD TDD(Test-driven development),就是测试驱动开发,是敏捷开发中的一项核心实践和技术,也是一种软件设计方法论。...本文将以创建一个 Confirmation 组件来说明,如何在 React 中如何实现测试驱动开发。..."dialog">; }; export default Confirmation; 然后把这个组件导入到测试中,它现在通过了。...TDD 一步一步地引导完成组件特性的规范,确保我们在组件重构或者他人修改代码的时候能够遵循现有开发的逻辑。这这是 TDD 的优势。...如何测试react 路由? 如何测试接口? 希望这篇文章对大家有所帮助,也可以参考我往期的文章或者在评论区交流你的想法和心得,欢迎一起探索前端。

    2.1K10

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

    什么是 TDD TDD(Test-driven development),就是测试驱动开发,是敏捷开发中的一项核心实践和技术,也是一种软件设计方法论。...本文将以创建一个 Confirmation 组件来说明,如何在 React 中如何实现测试驱动开发。..."> } export default Confirmation 然后把这个组件导入到测试中,它现在通过了。...TDD 一步一步地引导完成组件特性的规范,确保我们在组件重构或者他人修改代码的时候能够遵循现有开发的逻辑。这这是 TDD 的优势。...例如: 如何出测试 react hooks ? 如何测试 react 路由? 如何测试接口? 希望这篇文章对大家有所帮助,也可以参考我往期的文章或者在评论区交流你的想法和心得,欢迎一起探索前端。

    2.2K10

    React 中引入 Angular 组件

    为了在我的编辑器中使用 Angular,我用 Angular 编写了一个重命名功能。而为了使用它,我得再次使用一次 customEvent,而在这个微前端架构的系统中,其事件通讯机制已经相当的复杂。...于是,我便想,不如在 React 中引入 Angular 组件吧。...React 中引入 Angular 组件 于是,便使用 create-react-app 创建了一个 DEMO,然后引入组件: 组件 在那些微前端相关的文章中,我们指出类似于 Stencil 的形式,将组件直接构建成 Web Components 形式的组件,随后在对应的诸如,如 React...return (); } } 使用它构建出来的组件,大概可以在 30kb 左右的大小。 不论是不是一个经量级的方案,但是它至少证明了组件复用的可行性。

    2.1K30

    React中的高阶组件

    HOC在React的第三方库中很常见,例如Redux的connect和Relay的createFragmentContainer。...Mixin是一种混入的模式,在实际使用中Mixin的作用还是非常强大的,能够使得我们在多个组件中共用相同的方法,但同样也会给组件不断增加新的方法和属性,组件本身不仅可以感知,甚至需要做相关的处理(例如命名冲突...注意 不要改变原始组件 不要试图在HOC中修改组件原型,或以其他方式改变它。...因此每次render时都会是同一个组件,一般来说,这跟你的预期表现是一致的。在极少数情况下,你需要动态调用HOC,你可以在组件的生命周期方法或其构造函数中进行调用。...务必复制静态方法 有时在React组件上定义静态方法很有用,例如Relay容器暴露了一个静态方法getFragment以方便组合GraphQL片段。

    3.8K10

    3、React组件中的this

    这段代码形象的验证了,JavaScript函数中的this不是在函数声明的时候,而是在函数运行的时候定义的; 同样,React组件也遵循JavaScript的这种特性,所以组件方法的‘调用者’不同会导致...this的不同(这里的 “调用者” 指的是函数执行时的当前对象) “调用者”不同导致this不同 测试:分别在组件自带的生命周期函数以及自定义函数中打印this,并在render()方法中分别使用this.handler...- 面对如此混乱的场景,如果我们想在onClick中调用自定义的组件方法,并在该方法中获取组将实例,我们就得进行转换上下文即绑定上下文: 自动绑定和手动绑定 React.createClass有一个内置的魔法...,this.handler()中的this就指向组将实例,即onClick={this.handler}打印出来的为组件实例; 总结: React组件生命周期函数中的this指向组件实例; 自定义组件方法的...this会因调用者不同而不同; 为了在组件的自定义方法中获取组件实例,需要手动绑定this到组将实例。

    2.9K10

    React中的纯组件

    React中的纯组件 React提供了一种基于浅比较模式来确定是否应该重新渲染组件的类React.PureComponent,通常只需要继承React.PureComponent就可以定义一个纯组件。...如果赋予React组件相同的props和state,render()函数会渲染相同的内容,那么在某些情况下使用React.PureComponent可提高性能。...组件的区别就是React.PureComponent中以浅层对比prop和state的方式来实现了shouldComponentUpdate()函数。...仅在你的props和state较为简单时才使用React.PureComponent,或者每次更新都使用新的对象,或者在深层数据结构发生变化时调用forceUpdate()来确保组件被正确地更新,你也可以考虑使用...此外React.PureComponent中的shouldComponentUpdate()将跳过所有子组件树的prop更新,因此需要确保所有子组件也都是纯的组件。

    2.5K10

    React中传入组件的props改变时更新组件的几种实现方法

    我们使用react的时候常常需要在一个组件传入的props更新时重新渲染该组件,常用的方法是在componentWillReceiveProps中将新的props更新到组件的state中(这种state...React 16.3中还引入了一个新的钩子函数getDerivedStateFromProps来专门实现这一需求。...问题二 假设页面加载完成后,会异步请求一些数据然后更新页面,如果用户在请求完成页面刷新之前已经在输入框中输入了一些文字,随着页面的刷新输入框中的文字会被清除。...在父组件中调用子组件的方法设置state 如果某些情况下没有合适的属性作为key,那么可以传入一个随机数或者自增的数字作为key,或者我们可以在组件中定义一个设置state的方法并通过ref暴露给父组件使用...}); } 在App中通过ref调用这个方法: ...

    5.2K30

    对 React 组件进行单元测试

    React 单元测试中用到的工具 III. 用测试驱动 React 组件重构 IV. React 单元测试常见案例 I....一般使用 Enzyme 中的 mount 或 shallow 方法,将目标组件转化为一个 ReactWrapper对象,并在测试中调用其各种方法: import Enzyme,{ mount } from...明确指定 PropTypes 对于一些之前定义并不清晰的组件,可以统一引入 prop-types,明确组件可接收的props;一方面可以在开发/编译过程中随时发现错误,另外也可以在团队中其他成员引用组件时形成一个明晰的列表...; }); ... }); 调用组件的“私有”方法 对于一些组件中,如果希望在测试阶段调用到其一些内部方法,又不想对原组件改动过大的,可以用instance()取得组件类实例.../modal 在一个项目中用到了 react-bootstrap 界面库,测试一个组件时,由于包含了其 Modal 模态弹窗,而弹窗组件是默认渲染到 document 中的,导致难以用普通的 find

    4.3K40

    使用Enzyme测试React(Native)组件|洞见

    组件化与UI测试 在组件化出现之前,我们不谈UI的单元测试,哪怕是对于UI页面进行测试都是一件非常困难的事情。...它本质上是一个完全在JavaScript中实现的headless浏览器。...的wrapper中轻松地指定想要查找的节点,在下面的示例中,我们可以通过React组件构造函数的引用找到该组件,也可以基于React的displayName来查找组件。...测试组件的交互行为 我们不但可以通过find方法查找DOM元素,还可以通过simulate方法在组件上模拟触发某个DOM事件,比如Click,Change等等。...在开发React应用时,我们经常需要做大量的功能测试,而Enzyme可以在大规模地减少功能测试数量上做出贡献。 ?

    2.4K40

    React 中的 dumb 组件和 smart 组件

    原文:https://medium.com/@thejasonfile/dumb-components-and-smart-components-e7b33a698d43 当你开始起步学习 React,...很快就会接触到组件(Component)的概念,正是这一概念让 React 脱颖而出。...不用时常的去关注它,在页面上放置信息后就算完事儿。 这种组件本身只有一个 render() 方法(他们也用不到其他的),并且总是表现为 Javascript 函数。...组件被定义一次后,可以在应用中被多次引用;值渲染其核心部分,组件的每个实例看起来都差不多。想要改变其外观的话,只有 props 这一个地方可以着手。简单又直观。...容器组件需要管理自身繁复的生命周期,并负责将数据作为 props,向下传递给展示型组件。 smart 组件是基于类的,并在 constructor() 函数中定义自身的 state。

    2.5K10
    领券