首页
学习
活动
专区
工具
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

    83630

    如何做前端单元测试

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

    3.3K20

    如何发布一个 TypeScript 编写 npm 包

    前言在这篇文章,我们将使用TypeScriptJest从头开始构建和发布一个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.2K10

    如何发布一个 TypeScript 编写 npm 包

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

    1.9K20

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

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

    5K20

    React Native自动化测试

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

    3K60
    领券