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

React 设计模式 0x8:测试

该库实际上通过 data-tested 查找节点中的元素以进行测试。还可以使用库来模拟 API 并验证它们的真实性。...模拟函数 使用 模拟函数 来侦测(查看)我们的函数被调用的情况,或者使用它来测试单个函数或整个模块。...在 Jest 中有以下三种类型的模拟函数Jest.fn(用于模拟单个函数) Jest.mock(用于模拟整个模块) Jest.spyOn(用于查看函数的调用情况) 更多信息请访问 https://jestjs.io...React 组件的工具和函数 编写测试用例 编写完整的测试用例,覆盖组件的所有代码路径,包括正常情况和异常情况 使用快照测试 使用 Jest 的快照测试功能来验证组件是否按预期呈现 使用模拟数据...使用模拟数据来测试组件,以确保它们在不同的数据情况下都能正常工作 使用模拟函数 使用模拟函数模拟组件的依赖项和外部接口,以便更好地控制测试环境 集成测试 编写集成测试测试应用程序的整个流程

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

干货 | 携程租车React Native单元测试实践

1.2 Enzyme Enzyme是AirBnb开源的React测试工具库,通过一套简洁的api,可以渲染一个或多个组件,查找元素,模拟元素交互(点击,触摸),通过和Jest相互配合可以提供完整的...@ctrip|react-native)'], //transform白名单 }; 三、Jest简单函数单元测试测试函数 function add(x, y) { return x + y;...(() => { console.log('每个测试用例测试完毕后运行'); }); 五、Jest Mock函数 在单元测试,有许多对象或函数并不需要真实的引用,因此需要mock。...七、Jest 异步测试 Jest单元测试是同步的,因此面对异步操作fetch获取数据,需要进行异步的模拟测试。...在携程租车前端单元测试的实践,我们总结出几个要点: 将待测试的组件当成黑盒,不用考虑内部逻辑实现; UI改动频繁,优先保证公用组件,工具函数,核心代码的单元测试模拟数据尽量真实; 多考虑边界条件情况

6K30

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

什么是TDD TDD(Test-driven development),就是测试驱动开发,是敏捷开发的一项核心实践和技术,也是一种软件设计方法论。...它的原理就是在编写代码之前先编写测试用例,由测试来决定我们的代码。而且 TDD 更多地需要编写独立的测试用例,比如只测试一个组件的某个功能点,某个工具函数等。...本文将以创建一个 Confirmation 组件来说明,如何在 React 如何实现测试驱动开发。...例如点击的按钮,就是 role="button" ;会让这个元素可点击;也可以使用 role 属性告诉辅助设备(屏幕阅读器)这个元素所扮演的角色。...创建一个模拟函数,将其作为“onOk”处理函数传递给组件,模拟单击“确认”按钮,并断言函数已被调用。

2.1K10

从工程化角度讨论如何快速构建可靠React组件

React 组件测试还有一个更好的选择,就是官方推荐的 jest + enzyme。...jest 跟 jasmine 有点类似,将一个测试库的功能大部份集成好了(断言等工具),一键安装 babel-jest 可以用 es6 直接写测试用例,搭配 jest-environment-jsdom...和 jsdom 能够模拟浏览器环境,结合 airbnb 写的 react 测试库 enzyme, 基本能满足大部份的 React 测试需求。...但这里举的例子, react-list-scroll 组件,一个 React 的滚动列表组件,碰巧遇到一种比较难模拟的情况,就是对 scroll 事件的模拟。这里想展开说一下。...通过 jest-environment-jsdom,它能够将 jsdom 注入到 node 运行环境,因此你可以在测试文件中直接使用 window 对象进行模拟

1.9K60

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

本文是 JavaScript 测试教程 系列的第1部分 1. JavaScript测试教程-part 1:用 Jest 进行单元测试 2....JavaScript测试教程–part 2:引入 Enzyme 并测试 React 组件 3. JavaScript测试教程–part 3:测试 props,挂载函数和快照测试 4....JavaScript测试教程–part 4:模拟 API 调用和模拟 React 组件交互 有多种不同种类的测试,我会首先解释其中的一部分。...E2E 测试的重点是在我们正在运行的程序模拟实际用户。他们将模拟滚动,单击和键入之类的行为,并从实际用户的角度检查我们的程序是否运行良好。...稍后我们将学习如何在 React 中使用 Jest 首先,让我们创建一些可以测试的简单函数

2.8K20

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

在之前的两篇教程,我们学会了如何去测试最简单的 React 组件。在实际开发,我们的组件经常需要从外部 API 获取数据,并且组件的交互逻辑也往往更复杂。...在这篇教程,我们将学习如何测试更复杂的组件,包括用 Mock 去编写涉及外部 API 的测试,以及通过 Enzyme 来轻松模拟组件交互 初次尝试 Jest Mock 我们的应用程序通常需要从外部的...value="" /> <button onClick={[Function]} > Add a task `; 在测试模拟...由于没有发起实际的 post 请求,我们的测试可以更可靠,更快。除此之外,我们还在整个 React 组件模拟了事件。我们检查了它是否产生了预期的结果,例如组件的请求或状态变化。...让测试通过 React文档[3] 里面提到:我们只能从函数式组件或其他 Hooks 调用 Hooks。

4.8K20

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

JavaScript测试教程–part 4:模拟 API 调用和模拟 React 组件交互 今天,我们进一步测试 React 组件。它涉及模拟组件交互和模拟 API 调用。你将学到两种方法,开始吧!...Node 的某些核心模块(例如 fs 或 path ),则需要在模拟文件明确调用 jest.mock('moduleName') Jest 允许我们对函数进行监视:接下来测试是否调用了我们所创建的...spyOn 函数返回一个 mock函数。有关其功能的完整列表,请阅读文档。我们的测试检查组件在渲染和运行之后是否从模拟调用 get函数,并成功执行。...ToDoList.test.js ToDoList component when rendered ✓ should fetch a list of tasks 如果你在多个测试监视模拟函数...从测试返回 promise 是能够确保 Jest 等待其解决的一种方法。 总结 在本文中,我们介绍了模拟模块,并将其用于伪造 API 调用。由于没有发出实际的请求要求,我们的测试可以更可靠、更快。

3.7K10

从echarts-for-react源码中学习如何写单元测试

前言 如果你熟悉React和Echarts的话,应该有用到过 echarts-for-react(虽然它现在没有维护了),本文就通过它写的测试用例来学习下如何写单元测试 如何测试function 有如下函数...,作用是「浅复制obj的keys」,如何判断它返回的是期待的结果?...obj[key]; }); return r; }; 测试用例 // 浅复制obj的keys import { pick } from '.....,可以保证该函数的返回值仍保持不变,进而不会影响到使用到该函数的旧需求 ② 当测试函数比较复杂时,非常方便,不用了解内部的详细代码,只需返回值符合期望即可 如何测试ReactComponent 当我写完一个...⑥ 如何测试DOM节点上的属性 ⑦ 如何测试React组件实例上的属性 ⑧ 如何测试组件上的props ⑨ jest.fn()的作用 ⑩ 如何测试组件已卸载 源码地址(有改动) https://github.com

6.1K50

那些年错过的React组件单元测试(上)

Jest特点: 零配置 快照 隔离 优秀的 api 快速且安全 代码覆盖率 轻松模拟 优秀的报错信息 Enzyme Enzyme是Airbnb开源的React测试工具库,提供了一套简洁强大的API,并内置...、Mock、Snapshot 快照测试等,这些我们会在下面 React 的单元测试示例依次讲解。...但这里我们思考一种场景:如果使用done来测试回调函数(包含定时器场景,setTimeout),由于定时器我们设置了 一定的延时( 3s)后执行,等待 3s 后会发现测试通过了。...我们在测试也主要是用到了mock函数提供的以下三种特性: 捕获函数调用情况 设置函数返回值 改变函数的内部实现 下面,我将分别介绍这三种方法以及他们在实际测试的应用。...总结 到这里,关于前端单元测试的一些基础背景和Jest的基础api就介绍完了,在下一篇文章,我会结合项目中的一个React组件来讲解如何做组件单元测试。 ?

4.9K20

何在模拟测试Windows Phone 8的NFC应用

众所周知Window Phone 8 SDK的模拟器不支持NFC功能的测试。...可喜的是开源项目Proximity Tapper解决了在模拟测试NFC功能的需求,可以实现Windows Phone 8 emulator模拟NFC操作,还可实现Windows Phone与Windows...由于Visual Studio不支持同时运行两个相同的模拟器,你需要选择不同的分辨率的模拟器来解决问题。模拟器启动后在Proximity Tapper的Devices中会发现两个设备。...按住Ctrl键用鼠标选中两个模拟器,然后点击"Tap Selected Devices Remain Connected"。这样就可在两个模拟器之间测试NFC的功能。...下图是笔者测试通过NFC功能发布应用的Uri关联消息。第一台模拟器Publish Uri Message,第二台模拟器通过NFC接收到消息后可启动与此Uri关联的应用。

2.3K10

Jest单元测试之旅—实践总结

这里针对自身场景选择合适的工具既可以,因为我们业务主要使用React,而JestReact Testing Library则是我们最佳的选择。下面也主要围绕该工具进行介绍。...下面会根据各种场景进行分析 二、异步函数 在我们实际开发我们会遇到很多异步函数,但是因为Jest在进行测试时,默认情况下一旦到达运行上下文底部当前测试立即结束,这样意味着测试将不能按照我们的预期进行,...每个方法都有不同的使用场景,每个API都会生成一个mock模拟函数Jest模拟函数提供了很多方法给予我们模拟方法的返回、实现等等,可移至文档参考 jest.fn jest.fn主要是创建一个模拟函数...这意味着模块模拟不会包装原始模块,它会完全替换require系统的原始模块。因此,mockRestore可以在模拟模块模拟函数上定义,但是调用它不会恢复原始实现。...模拟部分函数,这里使用了jest.requireActual,该方法主要是绕过模拟模块导出真实模块,然后通过jest.mock的工厂函数重新去定义该模拟模块的内容,这种方式就可以指定导出的模块具体哪些方法需要被模拟

10.2K20

Jest + React Testing Library 单测总结

2、Jest 的使用 Jest 的安装这里就不赘述了,如果使用 create-react-app 来创建项目,JestReact Testing Library(RTL) 都已经默认安装了。...运行指定文件测试用例),就可以得到测试结果,: 当然,如果想要看到覆盖率的报告,可以使用 jest --coverage,或者 jest-report。...2.3 Jest Mock 在查看官方文档的时候,Jest 匹配器还有一类匹配器专门用来检查 Jest Mock 函数的。...的扩展阅读材料 Jest 学习指南 那些年错过的 React 组件单元测试 使用 Jest 测试 JavaScript (Mock 篇) 3、React Testing Library testing...3.1 render & debug 在测试用例渲染内容,可以使用 RTL 库的 render,render 函数可以为我们在测试用例渲染 React 组件。

4.5K20

前端单元测试Jest

在过程化编程,一个单元就是单个程序、函数、过程等;对于面向对象编程,最小单元就是方法,包括基类(超类)、抽象类、或者派生类(子类)的方法。 集成测试,也叫组装测试或联合测试。...在单元测试的基础上,将所有模块按照设计要求(根据结构图)组装成为子系统或系统,进行集成测试。 功能测试,就是对产品的各功能进行验证,根据功能测试用例,逐项测试,检查产品是否达到用户要求的功能。...; 沙箱和快速:Jest虚拟化了JavaScript的环境,能模拟浏览器,并且并行执行; 快照测试Jest能够对React 树进行快照或别的序列化数值快速编写测试,提供快速更新的用户体验; 支持异步代码测试...Mock函数通常会提供以下三种特性: 捕获函数调用情况; 设置函数返回值; 改变函数的内部实现; jest.fn() jest.fn()是创建Mock函数最简单的方式,如果没有定义函数内部的实现,jest.fn...当有异步方式运行的代码的时候,Jest需要知道当前它测试的代码是否已经完成,然后它才可以转移动另一个测试,也就是说,测试的用例一定要在测试对象结束之后才能够运行。

2.7K20

JavaScript测试教程-part 2:引入 Enzyme 并测试 React 组件

JavaScript测试教程-part 1:用 Jest 进行单元测试 2. JavaScript测试教程–part 2:引入 Enzyme 并测试 React 组件 3....JavaScript测试教程–part 4:模拟 API 调用和模拟 React 组件交互 在本教程的第一篇,我们简要介绍了单元测试的基础。这次要更进一步,使用 Enzyme 库测试 React。...在第一个测试,我们使用了 toContainReact 函数,这是一个自定义匹配器函数。它是 enzyme-matchers 库的一部分。...在第二个测试,我们在组件上调用了 find 函数。这要归功于 shallow 函数返回 ShallowWrapper,它是渲染输出的包装器。它有一组可供调用的函数。...在编写单元测试时,它工作得很好。在本教程的后续部分,我将介绍其他类型的渲染,并学习如何测试程序的不同部分。它将包括快照测试模拟数据之类的技术。下次见!

1.4K50

JavaScript 测试系列实战(二):深层渲染和快照测试

在上一篇教程,我们已经介绍了使用 Enzyme 测试 React 组件的基本知识。...今天,我们将更深入地挖掘并学习如何测试组件的 Props,如何(以及为什么)使用 mount 函数,以及什么是 Jest 快照测试。...因此,之前失败的测试现在就会通过。 由于 mount 函数模拟实际的 DOM,渲染成本更高,因此运行测试会花费更多的时间。...在测试与 DOM 的交互或者在处理高阶组件时,mount 函数也可以派上用场。_Mount 使用 DOM 实现的模拟Jest 默认使用的是 jsdom。...除此之外,我们还介绍了 Jest 快照测试,这是一个非常强大的工具,可以追踪组件渲染方式的变化。在接下来的文章,我们还将介绍测试中常见的 Mock 技巧——与组件的模拟交互,不见不散!

2.1K20

如何自动化测试 React Native 项目 (下篇) - 单元测试

接着上篇的内容, 这篇文章会详细的介绍在 Glow 我们如何写单元测试, 以及在 React Native 各个模块单元测试的详细实现方式。...当 snapshot 结果需要升级更新时, 只需要执行 jest -u 指令即可更新之前生成的 snapshot 结果。 为什么 Snapshot 在 React 测试是可靠的呢?...在交互测试,我们主要利用 simulate() API模拟事件,来判断这个元素的 prop 上的特定函数是否被调用, 传参是否正确, 以及组件状态是否发生意料之中的修改。...Reducer测试 Reducer 是纯函数, 因此测试的时候只要引入函数, 传入特定参数,判断函数返回是否符合预期即可。 可以利用 jest 的 snapshot test 来判断结果。...action 利用 jest 的 spy 函数, mock const dispatch = jest.fn(), 然后把 dispatch 传给异步 action 的函数, 并验证 dispatch

3.2K21
领券