在项目中使用jest测试react native组件的方法

目前javascript的测试工具很多,但是针对react的测试策略,facebook推出的reactjs标配测试工具是jest.jest的官网地址:https://facebook.github.io/jest/。我们可以看到jest官网宣称的是:painless javascript testing。是facebook用于测试服务和react应用程序的javascript单元测试框架。本文主要和大家介绍如何在项目中使用jest测试react native组件,给大家做个参考。

所谓单元测试也就是对每个单元进行测试,通俗的将一般针对的是函数,类或单个组件,不涉及系统和集成。单元测试是软件测试的基础测试。Jest主要有以下特点:

适应性:Jest是模块化、可扩展和可配置的。

沙箱和快速:Jest虚拟化了JavaScript的环境,能模拟浏览器,并且并行执行

快照测试:Jest能够对React 树进行快照或别的序列化数值快速编写测试,提供快速更新的用户体验。

支持异步代码测试:支持promises和async/await

自动生成静态分析结果:不仅显示测试用例执行结果,也显示语句、分支、函数等覆盖率。

为什么要使用单元测试工具

我们在开发过程中,不使用测试工具依然可以自己写代码进行单元测试,但是我们的代码存在着相互调用关系,在测试过程中我们又希望使单元相对独立而又能正常运行,就需要我们对被测函数的依赖函数和环境进行mock,并且在测试数据输入、测试执行和测试结果检查方面存在很多相似性,测试工具正是为我们在这些方面提供了方便。

准备阶段

需要一个rn项目,这里演示的是我个人的项目ReactNative-ReduxSaga-TODO

安装jest

如果你是用react-native init命令行创建的rn项目,并且你的rn版本在0.38以上,则无需安装了。不太清楚的话就看一下

package.json文件中是否包含以下代码:

 // package.json "scripts": {  "test": "jest" }, "jest": {  "preset": "react-native" }

登录后复制

如果没有就安装一下npm i jest –save-dev,并把上述代码添加到package.json文件的对应位置。

以上步骤完成后,简单运行npm run test测试一下jest是否配置成功。但我们没有写测试用例,终端会打印no tests found。这时就配置完成了。

快照测试

写一个组件

import React from 'react';import { Text, View,} from 'react-native';import PropTypes from 'prop-types';const PostArea = ({ title, text, color }) => (   {title}  {text} );export default PostArea;

登录后复制

在项目根目录下找到__test__文件夹,现在,让我们使用React的测试渲染器和Jest的快照功能来与组件进行交互,并捕获呈现的输出并创建一个快照文件。

// PostArea_test.jsimport 'react-native';import React from 'react';import PostArea from '../js/Twitter/PostArea';import renderer from 'react-test-renderer';test('renders correctly', () => { const tree = renderer.create().toJSON(); expect(tree).toMatchSnapshot();});

登录后复制

然后在终端运行npm run test或jest。将会输出:

PASS  __tests__PostArea_test.js (6.657s)  √ renders correctly (5553ms) › 1 snapshot written.Snapshot Summary › 1 snapshot written in 1 test suite.Test Suites: 1 passed, 1 totalTests:       1 passed, 1 totalSnapshots:   1 added, 1 totalTime:        8.198sRan all test suites.

同时,在test文件夹下会输出一个文件,即为生成的快照。

// Jest Snapshot v1, https://goo.gl/fbAQLPexports[`renders correctly 1`] = `   title    text `;

登录后复制

修改源文件

在下一次运行测试的时候,呈现的输出将与之前创建的快照进行比较。快照应该和代码一起提交。当快照测试失败的时候,就需要检查是否有意或无意的更改。如果是和预期中的变化一样,调用jest -u来覆盖当前的快照。

我们来更改一下原来的代码:把第二行的字号改为14.

{text}

登录后复制

这时,我们再运行jest。这时终端将会抛出错误,并指出了错误位置

在项目中使用jest测试react native组件的方法

因为这段代码是我们有意改的,这时运行jest -u,快照被覆盖。再执行jest则不会报错了~

相关推荐:

React Native自定义组件实现抽屉菜单控件效果

关于react native与webview通信

React Native竖向轮播组件的封装详解

以上就是在项目中使用jest测试react native组件的方法的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2786552.html

(0)
上一篇 2025年3月8日 17:46:38
下一篇 2025年3月8日 17:46:43

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 用react写一个分页组件的示例

    本文主要和大家介绍用react来写一个分页组件(小结),希望能帮助大家学会用react来写一个分页组件,下面我们一起来学习一下吧。 效果截图(样式可自行修改): 构建项目 create-react-app react-paging-comp…

    2025年3月8日
    200
  • 简单搭建一个react项目

    本文主要和大家介绍了从零开始搭建一个react项目开发,小编觉得挺不错的,希望能帮助大家学习如何搭建一个react项目。 1、npm init 生成 package.json 文件. 2、安装各种需要的依赖: npm install &#8…

    编程技术 2025年3月8日
    200
  • react受控组件与非受控组件详解

    我们都知道,有许多的web组件可以被用户的交互发生改变,比如:,,或者是我现在正在使用的富文本编辑器。这些组件在日常的开发中很不显眼,我们可以很轻易的通过输入一些内容或者设置元素的value属性来改变组件的值。但是,因为react是单向数据…

    编程技术 2025年3月8日
    200
  • React Native自定义控件实现底部抽屉菜单

    原生开发中,自定义view可谓是屡见不鲜的事情,往往系统的控件总不能满足现实的需求。五花八门的产品设计需要我们做出不同的view。关于自定义view的内容网上已经有很多的博文,本篇博客要和大家分享如何在react native中自定义组件实…

    2025年3月8日
    200
  • react前后端同构渲染示例代码

    前后端同构渲染:当客户端请求一个包含react组件页面的时候,服务端首先响应输出这个页面,客户端和服务端有了第一次交互。然后,如果加载组件的过程需要向服务端发出ajax请求等,客户端和服务端又进行了一次交互,这样,耗时相对较长。前后端同构渲…

    2025年3月8日
    200
  • React中的refs的使用教程分享

    ref是react中的一种属性,当render函数返回某个组件的实例时,可以给render中的某个虚拟dom节点添加一个ref属性,如下面的代码所示:     var App = React.createClass({ render: fu…

    2025年3月8日
    200
  • 利用angular、react和vue实现相同的面试题组件

    react 和angular,vue 这三个框架最近都比较火,本文主要给大家介绍的是关于angular、react和vue实现相同的面试题组件的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。 面试题要求如下所示 …

    2025年3月8日
    200
  • React拖拽排序组件Dragact详解

    先来一张图看看: Typescript(TS) 最近一直在使用TS进行开发,Eggjs的Ts实践也写了一半。这玩意儿,真的是有毒的,因为能让你上瘾。 随便将一个项目迁移到TS之上,在强大的静态类型检测下,你就能轻松的发现一堆逻辑和边界错误。…

    2025年3月8日
    200
  • vue使用Jade模板写html

    vue 使用Jade模板写html,stylus写css 日常工作都是使用vue开发页面和webapp,写的多了就想偷懒简化各种书写方式,所以使用了jade写html,stylus写css,省了很多的步骤和提高了效率。安装包 // 安装ja…

    编程技术 2025年3月8日
    200
  • react、webpack、跨域代理多页面

    初学react,利用webpack进行工程化开发管理,遇到一些问题,如多页面处理,跨域代理的设置,如何同时引入使用jquery。第一次试水,简单写了一个表格组件。 先照着react官网提供的教程使用create-react-app创建rea…

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论