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

原创干货:前端单元测试Jest零基础入门教学

---- 写在开头: 单元测试对于很多人比较模式,它是一种推动开发,或者提高产品质量的手段, 我画一张图,大家就能理解 ---- 其实单元测试,就是先编写单元测试代码,然后使用单元测试框架,去模拟环境...(例如浏览器),然后运行你的代码,看代码是否按预期运行 ---- 这里为了降低文章篇幅,对于初学者更友好,于是这里使用我开源的通用脚手架,集成TypeScript+JavaScript混合开发,Jest...最简单的方法,试试传入一个空对象 import App from '.....其他的API这里就不做解释了,有兴趣的可以用ykj-cli这个脚手架试验一把,上面的例子都在里面,非常方便 ---- 前端单元测试还有一个很重要的一点,就是生成页面快照 为什么要生成页面快照?...然后等部分代码跑完后,再生成一次快照,跟之前的快照进行对比,这样就能判断你中间的这部分代码有没有影响UI,这样能确定有没有BUG的出现 ---- 页面快照: import App from '..

1.1K20

Jest:给你的 React 项目加上单元测试

Jest 是一款轻量的 JavaScript 测试框架,它的卖点是简单好用,由 facebook 出品。本文就简单讲讲如何使用 Jest 对 React 组件进行测试。 为什么需要单元测试?...Jest 基本使用 我们先写一个简单的函数,作为被测试的模块。...更多 API 可以看文档: https://jestjs.io/docs/expect 你可以用 describe 方法将多个相关的 test 组合起来,这样能让你的测试用例更好地被组织,测试报告输出也更有条理...yarn create react-app jest-app --template typescript 执行单元测试的命令为: yarn test CreateReactApp 内置了 Jest,...React Testing Library 是 以用户为角度 的测试库,能够模拟浏览器的 DOM,将 React 组件挂载上去后,我们使用其提供的一些模拟用户操作的 API 进行测试。

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

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

    这里简单搭建typescript+jest环境已供我们学习使用。...在实际开发中,我们还会遇到另一种情况,当我们的循环定时器方法内是一个异步函数,如下: // src/example5.ts export const asyncLoopTime = (callback:...这意味着模块模拟不会包装原始模块,它会完全替换require系统中的原始模块。因此,mockRestore可以在模拟模块中的模拟函数上定义,但是调用它不会恢复原始实现。...这里分别使用了jest.spyOn和jest.Mock两个方式对同一个方法进行3种不同编写方式的测试,在实际情况中我们应该选择合适的方法。...在类中我们可以使用private对方法进行私有化,此时我们在单测时没办法直接访问或者模拟。需要通过对私有成员使用数组访问或者通过prototype属性进行模拟。

    10.3K20

    React报错之Cannot find namespace context

    中,为了解决"Cannot find namespace context"错误,在你使用JSX的文件中使用.tsx扩展名,在你的tsconfig.json文件中把jsx设置为react-jsx,并确保为你的应用程序安装所有必要的...authContext}> Your app here ); }; export default App; 上述代码片段的问题在于...tsx 这是不被允许的,因为为了能在TypeScript文件中使用JSX,我们必须这样做: 以.tsx扩展名命名文件 在tsconfig.json文件中开启jsx选项 确保所有你编写JSX代码的文件都有...安装@types/包 在React中出现"Cannot find namespace context"错误的另一个原因是,我们没有安装必要的@types/包。...@types/react @types/react-dom @types/node @types/jest typescript --dev 该命令为react,react-dom,node,jest

    85930

    如何做前端单元测试

    现状 下面是一份抽样调查片段,抽样依据如下: 向 200 名相关者发出在线问卷调查,其中 70 人回答了问卷中的问题,前端人数占 81.16%,如果你有兴趣的话,也可以帮我填一下调查问卷 (https:...调查中的另一个有趣的见解是,在大型组织中单元测试更受欢迎。其中一个原因可能是,由于大型组织需要处理大规模的产品,以及频繁的功能迭代吧。这种持续的迭代方式,迫使他们进行自动化测试的投入。...*改写 **.babelrc { "presets": ["@babel/preset-env", "@babel/preset-typescript"] } 为了解决编辑器对 jest 断言方法的类型报错...单元测试覆盖率是一种软件测试的度量指标,指在所有功能代码中,完成了单元测试的代码所占的比例。...同时在阅读过程中如果你有任何问题,或者有更好见解,更好的框架推荐,欢迎你在评论区留言!

    3.3K20

    如何发布一个 TypeScript 编写的 npm 包

    前言在这篇文章中,我们将使用TypeScript和Jest从头开始构建和发布一个NPM包。我们将初始化一个项目,设置TypeScript,用Jest编写测试,并将其发布到NPM。...让我们也在同一文件夹中设置一个git仓库。...添加测试作为一名负责任的开发,我们将从测试开始。我们将使用jest,因为它简单且好用。...我们的模块导出一个单一函数,digx。它接收任意对象,字符串参数path,以及可选参数shouldThrow,该参数使得提供的路径在源对象的嵌套结构中不被允许时,抛出一个异常。...总结我们从头开始创建并发布了一个简单的npm包。我们的库提供了一个ESM模块,TypeScript的类型,使用jest覆盖测试用例。你可能会认为,这其实一点都不难,的确如此。

    1.4K20

    Vue-Test-Utils + Jest 单元测试入门与实践

    Vue-Test-Utils + Jest 单元测试入门与实践 创建Vue项目 在终端用vue-cli创建一个项目 $vue create vue-test 选择Manually select features...勾选 Babel、TypeScript、Router、Unit Testing: ? 选择Jest: ?...指定运行某个测试文件 新建一个couter.vue文件简单的界面,点击按钮数目加1。...expect 是 Jest 内置的断言风格,业界还存在别的断言风格比如 Should、Assert 等。 toBe 是 Jest 提供的断言方法, 更多的可以到Jest Expect 查看具体用法。...trigger 方法可以用来触发一个 DOM 事件,这里触发的事件都是同步的,所以不必将断言放到 $nextTick() 里去执行;同时支持传入一个对象,当捕获到事件的时候,可以获取到传入对象的属性。

    2.6K10

    前端工程化指的是什么?

    然后是就 命名冲突问题,一种旧的方案是 BEM,就是通过将 CSS 命名 在组件化的框架中,我们有很多方案,可以用 CSS in JS,也可以用 CSS Module,或者 Vue 特有的 CSS Scoped...HTML 的模块化。 html 通常是动态的,在服务端我们会使用模板引擎(template),将得到的数据注入到占位符中。在后端 Nodejs,我们可以用 pug、handlebars、ejs 等。...对应的工具是 husky。 自动化 重复的可以自动化的流程化工作,应该尽量去自动化。让人去做,对人是一种折磨,然后也不能保证质量,因为通常流程也很复杂,即使是简单,做多了也容易错。...前面说的 git hook,在本地 commit 时进行一些操作,也算是一种简单的自动化。 打包工具 前端工程化的核心是打包工具。...流行的单元测试库有 Jest; 热重载:因为每次改代码都要编译,如果整个项目都要重新编译开发体验很差,可以用热重载只编译被修改的模块; 组件库文档:可以用 stroybook。

    1.3K10

    如何发布一个 TypeScript 编写的 npm 包

    前言 在这篇文章中,我们将使用TypeScript和Jest从头开始构建和发布一个NPM包。 我们将初始化一个项目,设置TypeScript,用Jest编写测试,并将其发布到NPM。...让我们也在同一文件夹中设置一个git仓库。...添加测试 作为一名负责任的开发,我们将从测试开始。我们将使用jest,因为它简单且好用。...npm i -D jest @types/jest ts-jest ts-jest包是Jest理解TypeScript所需要的。另一个选择是使用babel,这将需要更多的配置和额外的模块。...总结 我们从头开始创建并发布了一个简单的npm包。 我们的库提供了一个ESM模块,TypeScript的类型,使用jest覆盖测试用例。 你可能会认为,这其实一点都不难,的确如此。

    2K20

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

    前端自动化测试产生的背景 在开始介绍jest之前,我想有必要简单阐述一下关于前端单元测试的一些基础信息。 为什么要进行测试?...transform: 设置哪些文件中的代码是需要被相应的转译器转换成 Jest 能识别的代码,Jest 默认是能识别 JS 代码的,其他语言,例如 Typescript、CSS 等都需要被转译。...Mock 介绍jest中的mock之前,我们先来思考一个问题:为什么要使用mock函数? 在项目中,一个模块的方法内常常会去调用另外一个模块的方法。...我们在测试中也主要是用到了mock函数提供的以下三种特性: 捕获函数调用情况 设置函数返回值 改变函数的内部实现 下面,我将分别介绍这三种方法以及他们在实际测试中的应用。...这种方式就不用去模拟axios,而是直接走的本地的模拟方法,也是比较常用的一种方式,这里就不展开说明了。

    5K20

    React Native自动化测试

    React Native的官方代码仓库里有一些测试代码,你可以在贡献代码之后回归测试一下,以检测有没有引起别的问题。...有一些功能我们还没有完成模拟(jest中需要模拟一些接口),因而没有纳入测试,以避免测试不通过和提高测试速度,但我们正在尽最大努力去逐渐补完这些功能的模拟。...集成测试需要在模拟器/真机上运行,以验证模块、组件以及React Native的内核部分(比如bridge)在端对端测试中运作正常。...RCTTestRunner预设了ReactNative的环境,并且可以以XCTestCase的形式在Xcode中直接运行测试 (最简单的方法就是使用runTest:module)。...屏幕截图在32位和64位色深以及不同的操作系统版本上可能会有细微的差别,所以建议强制在指定的配置环境中执行测试。此外我们还强烈建议所有的网络数据和其他的潜在依赖项都应该事先模拟。

    3K60

    可能是目前最详细从零开始配置 TypeScript 项目的教程

    温馨提示:如果你希望在项目中制作基于 TypeScript 实现的简单易用的工具函数库,你可以使用一些成熟的 "零配置" 脚手架,例如 tsdx[9]、microbundle[10] 以及 typescript-starter...中的 `main`[52] 字段信息: "main": "dist/index.js" 温馨提示:对于工具包使用全量引入的方式并不是一个好的选择,可以通过具体的工具方法进行按需引入。...(例如 ghooks[86] 在 package.json 中只需要进行简单的钩子属性配置[87]),而在内部则通过替换 Git 钩子示例脚本的形式使得外部配置的钩子可以被执行,例如 husky[88]...test 文件夹,然后将所有的测试代码集中在 test 目录下进行管理,另外一种是在各个源码文件的同级目录下新建 __test__ 目录,进行就近测试。...image", path.resolve(__dirname, "public")); // 在文档中模拟库包的引入方式 // 例如发布了 algorithms-utils 库包之后,

    5.1K22
    领券