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

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

在较大规模的前端项目中,测试对于保证代码质量十分重要,而React的组件和函数式编程, 这种相同输入一定返回相同输出的幂等特性特别适合单元测试。...1.2 Enzyme Enzyme是AirBnb开源的React测试工具库,通过一套简洁的api,可以渲染一个或多个组件,查找元素,模拟元素交互(点击,触摸),通过和Jest相互配合可以提供完整的...比如之前提到的初始文件jest.setup.js,我们会mock一些对象: jest.useFakeTimers(); //mock时间 jest.mock('....七、Jest 异步测试 Jest单元测试是同步的,因此面对异步操作fetch获取数据,需要进行异步的模拟测试。...; 通过单元测试,给项目带来了不少好处: 通过单元测试可以确保代码得到预期的结果,在测试环境中就发现bug; 当修改依赖的组件时,能在测试中发现被影响组件的错误,这样可以支持我们更好的重构代码,有利于项目的长期迭代

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

React Native单元测试

概述 所谓单元测试,就是对每个单元进行的测试,一般针对的是函数、类或单个组件,不涉及系统和集成,单元测试是软件测试的基础测试,一个完备的软件系统都会涉及到单元测试。...目前,Javascript的测试工具很多,但是针对React的测试主要使用的是Facebook推出的Jest框架,Jest是基于Jasmine的JavaScript测试框架,具有上手容易、快速、可靠的特点...相比其他的测试框架,Jest具有如下的一些特点: 适应性:Jest是模块、可扩展和可配置的; 沙箱和快速:Jest虚拟化了JavaScript的环境,能模拟浏览器,并且并行执行; 快照测试Jest能够对...环境搭建 安装Jest 首先,在项目目录下使用下面的命令安装Jest。...npm install --save-dev jest //或者 yarn add --dev jest 如果你使用的是react-native init命令行方式来创建的RN项目,且RN版本在0.38

87520

React Native自动测试

我们期待你能帮助我们提高测试覆盖率,以及提供更多的测试代码或是测试用例。 使用Jest测试 Jest是在命令行通过node来执行的纯js测试工具。测试代码放置在__tests__目录下。...有一些功能我们还没有完成模拟(jest需要模拟一些接口),因而没有纳入测试,以避免测试不通过和提高测试速度,但我们正在尽最大努力去逐渐补完这些功能的模拟。...你可以在react-native源代码的根目录中使用如下命令来运行现有的jest测试代码: npm test 我们建议你在贡献代码的时候也添加自己的测试代码。...集成测试需要在模拟器/真机上运行,以验证模块、组件以及React Native的内核部分(比如bridge)在端对端测试运作正常。...这类测试首先渲染一个组件,然后使用TestModule.verifySnapshot()比对屏幕截图与参考效果图,其原理是利用了FBSnapshotTestCase这个库。

3K60

干货 | 从0到1,搭建一个体系完善的前端React组件

最终我们选择的更优化的方案,是使用babel 直接做编译转换,不使用任何额外的构建工具,也不做压缩优化处理---- 这些工作,在现代的前端项目中,都会自动处理,不需要组件库再做多余的构建动作。...三、组件库实现业务组件的按需加载 与各大知名的开源组件库类似,为了减少项目的打包体积,我们对组件的复杂业务组件航班组件、机场组件、城市选择组件等,设计了按需加载的模式。...组件项目中基础UI部分,从组件剥离,拆分成独立的ui-basic组件库;组件项目中工具方法(表单校验、环境判断、正则处理、时间日期格式等),拆分成独立的 util库。...七、组件库单元测试、自动与持续集成 单元测试组件库在开发和交付流程上趋于完善后,在公司G2战略背景下,为了保证代码的高质量,我们开始在组件接入自动单元测试。...在测试技术框架的选型上,综合考虑了当前技术栈、框架市面通用性等多种因素,最终选择如下: 测试框架:Jest 选取原因:对React技术栈友好,同时也是React-Native官方推荐的测试框架 测试库:

1.7K30

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

css ,我们推荐使用 stylelint ,js 则是 eslint。有这种自动的工具协助开发者进行检查,能更好地保障我们的代码质量。...测试自动 上述讲的都跟如何提升开发效率有关的,即满足 “快速” 这个目标,对 ”可靠“ 有一定帮助,稳定的流程和良好的代码规范,但并没有非常好地保证组件地稳定可靠。...需要 ”可靠“的组件,还需要测试来保证。 不少开发者做测试使用 mocha,如果是 UI 组件可能会配置上 karma。...jest 跟 jasmine 有点类似,将一个测试库的功能大部份集成好了(断言等工具),一键安装 babel-jest 可以用 es6 直接写测试用例,搭配 jest-environment-jsdom...通过 jest-environment-jsdom,它能够将 jsdom 注入到 node 运行环境,因此你可以在测试文件中直接使用 window 对象进行模拟。

1.9K60

Unit Testing

#应该测试你的程序 其实每一个项目都应该使用单元测试,单元测试可以很好的保证你的代码不会欺骗你。 世界上没有任何一个完美的程序,也更不会有完美的人可以写出没有任何问题的代码。...#配置单元测试 #安装 Jest 我们使用 yarn 来安装 Jest 包 yarn add -D jest 在 package.json 文件中加入测试命令 { "scripts": {...css scss 等样式文件 在我们组件当中大部分都会有 css 或者 scss 等文件,但是 Jest 并无法处理这类文件,此时需要将此类样式文件都 Mock 掉 { moduleNameMapper...纯 UI 展示型组件 ✅ ✅ ❌ 容器型组件 ✅ ✅ ❌ 通用 UI 组件 ✅ ✅ ❌ 功能型组件 ✅ ✅ ❌ 总结一句话就是,所有的功能型代码,都需要进行单元测试,但是像 UI 以及 css 等样式代码...在表格 ✅ 的,建议是在 100% 的覆盖率 #参考 Jest React 测试技巧 React 单元测试策略及落地 单元测试-维基百科

1.3K20

QQ音乐商业Web团队前端工程实践总结

一个前端工程的生命周期可以大致划分为这四个过程: [前端工程的生命周期] 任何在这四个过程应用的系统、严格约束、可量化的方法都可以称之为工程。...我们回想一下原有引用组件的步骤: 引入这个组件的js; 引入这个组件样式css(如果有); 在页面引入这个组件的html; 最后是编写初始组件的代码。...构建 在前端项目开发我们使用了模块的方案,有可能还引入了组件的机制,依赖一些开发框架,这个时候就需要对项目进行构建,构建一般可以包括这几个步骤: 代码转换:允许使用更高级的JavaScript语法...测试覆盖率工具是用于统计测试用例对代码的测试情况,生成相应的报表,Istanbul(Jest内置集成)。...[CSS模块方案对比] 单元测试框架 单元测试框架我们选择了Jest,主要是因为开箱即用,不需要再引入断言库,生态也很好,较多用于React项目,而且组内的UI自动测试系统是支持Jest的,这篇文章

4.2K112

使用 Jest 进行前端单元测试

Jest 默认使用 Jasmine 语法,支持直接使用 Promise 和 async/await 进行异步测试,支持对 React 组件进行快照监控, 扩展和集成 Babel 等常用工具集也很方便。...目前 Jest 已经在 Facebook 开源的 React, React Native 等前端项目中被做为标配测试框架。 下面简单介绍一些 Jest 比较有用的功能和用法。...Timer 业务代码如果有 setTimeout 这样的计时器,在测试过程如果真实的去执行,可能会严重拖慢整个测试项目的执行时间,设想一个功能有 n 个用例去测试,延时就会被重复 n 倍。...下图为在 react-native项目中执行 verbose 的 jest test 时,控制台的实时输出: ? Jest 的覆盖率统计: ? 详细报错定位: ?...最后总结一下,编写可测试的代码,其实可以遵循这几个点来规范: 功能最小,单一职责的函数 抽离业务逻辑的公共部分 细分文件依赖 避免函数副作用(不修改实参) 其他还有很多可以优化的点不再阐述,感兴趣的推荐阅读一下

5.5K90

干货 | 揭秘携程三端通用框架的CRNWEB

对于业务方而言Flight项目,Hotel项目等等,无需关心底层的技术实现,使用React-Native这一套开发技术体系基本上就足矣。...; 3)全局性请求参数的解构和传递; 4)初始全局性组件的容器等等; 2、同步组件的异步转换 HelloWorld组件就是一个标准的React-Native组件,在CRNWEB...而HelloWold引入的View,Text,StyleSheet等等组件,也全部变成了WEB版本的具体实现,这里使用了一招瞒天过海。...3)一些共性上的问题,单位处理,颜色处理等等。 4)一些差异性样式问题,如前缀处理,视口问题。 5)Web不支持的样式BoxShadow的实现等。...另外我们使用了一些工具,能很好的将项目中的模块依赖关系呈现出来,比如说Log这个模块被哪些页面引用,首页这个页面引用了哪些具体的模块(:FStyleSheet,Log,utils,LinearGradient.web

1.5K30

前端工程实践总结 |

前端工程的生命周期 任何在这四个过程应用的系统、严格约束、可量化的方法都可以称之为工程。工程的程度越高,在工作因人的个体差异性导致的缺陷或者短板就会越少,项目质量可以得到更有效的保障。...我们回想一下原有引用组件的步骤: 引入这个组件的JS; 引入这个组件样式CSS(如果有); 在页面引入这个组件的; 最后是编写初始组件的代码。...1.构建 在前端项目开发我们使用了模块的方案,有可能还引入了组件的机制,依赖一些开发框架,这个时候就需要对项目进行构建,构建一般可以包括这几个步骤: 代码转换:允许使用更高级的JavaScript...测试覆盖率工具是用于统计测试用例对代码的测试情况,生成相应的报表,Istanbul(Jest内置集成)。...在组件文档和demo这一章节我们已经有了组件示例,并构建了文档页,可以直接接入团队的自动测试系统,结合使用puppeteer进行截图对比。

4.4K41

ReactJS和React-Native的主要区别在哪里

当你开始新项目时,你会注意到它很容易配置: 它非常快而且只需要在命令行工具运行一行命令就可以开始项目了。...要为您的React-Native组件设置样式,您必须在Javascript创建样式表。...的样式表示例 我不知道你,但即使Flexbox已经有一段时间了,我从来没有完全沉浸于其使用,主要是因为我涉及的项目需要与旧版浏览器的向后兼容性。...使用React-Native,您将学到一种全新的方式,通过Javascript为应用程序的不同组件设置动画。动画组件的推荐方法是使用React-Native提供的Animated API。...开发者工具 当您启动新的本机项目时,您可以从React获得几个开发人员工具,而无需安装任何内容,这在我看来非常棒。当您需要对应用程式的样式做小修改时,非常适合使用热加载。

16.9K30

2020 年你应该知道的 React 库

第三种也是最流行的方法是使用 Prettier。它是一个强制的代码格式程序。您可以将其集成到编辑器或 IDE ,使其在每次保存文件时格式您的代码。...React 测试 如果您想深入了解 React 测试,请阅读以下内容: How to test components in React。要点如下: 测试 React 应用程序的主干是 Jest。...至少,您可以使用 React-test-renderer 在 Jest 测试渲染 React 组件。这已经足以用 jest 来执行所谓的快照测试了。...快照测试的工作方式如下: 运行测试之后,将创建 React 组件渲染的 DOM 元素的快照。当您在某个时间点再次运行测试时,将创建另一个快照,用作前一个快照的差异。...最终,您会发现自己在使用 Enzyme 或 React Testing Library (这两个都在 Jest 测试环境中使用)来进行更详细的测试功能集。

14.4K40

作为面试官,为什么我推荐组件库作为前端面试的亮点?

实际工作,我们在项目中需要自定义主题色,更改按钮样式,自定义图标,自定义table组件等等,这些都可以基于antd组件库进行二次封装,减少重复工作,提升开发效率。...单元测试:需要考虑 jest、enzyme 等工具的配合使用,生成测试覆盖率报告。...响应测试 响应测试通常涉及到 UI 组件在不同的设备或屏幕尺寸下的行为。这可能需要使用端到端(E2E)测试工具, Puppeteer、Cypress 等。...例如,Jest 和 Mocha 可以用于自动运行 JavaScript 单元测试,Puppeteer 和 Selenium 可以用于自动运行端到端测试。...代码检查: 使用 ESLint、Stylelint 等工具进行代码检查,使用 Jest 等工具进行单元测试和覆盖率检查。这些步骤可以在提交代码时或者 pull request 的过程自动进行。

88263

使用storybook管理React组件

本文已React的UI组件为例,演示如何新建/集成Storybook到项目中,并对UI组件进行全方位的管理,包括发布、demo文档、测试等。 1....测试UI组件 4.1 写测试用例的原因 找到bug 新修改没有改变已有的接口和功能 将测试用例作为文档 4.2 测试结构 使用storyshots插件来实现,其核心是使用Jest,原理是每次生成一份DOM...结构文档(类似于html源码),可以无痛集成到组件测试。...,通过断言来测试UI组件的属性,更多使用方法可以参考specifications插件的使用。...4.4 测试样式 样式测试这里采用Puppeteer 和Jest来实现,其原理是利用Puppeteer的无头的chrome浏览器和storybook的url绑定组件特点,来渲染不同的UI组件,再进行图片快照的对比

3.3K20
领券