一般我们不管是做前端还是后端,为了提高代码的质量,会选择一种测试驱动开发(TDD)的办法来写代码进行单元测试。Jest 是 Facebook 团队开发的一款测试框架,为的是提高开发者的“开发体验”。我们做单元测试的时候需要分解出一个个独立的模块,但是这样做要写很多的 mock 代码(模拟的辅助函数),非常地繁琐,这是行业的一个“痛点”。如果你和我一样很懒,而且认同“懒惰即是美德”、“不要重复你自己(DRY)”这些原则的话,那么 Jest 测试框架就是你最好的选择。如果你用过一些其他测试框架比如 Mocha 和 Jasmine 的话,看一下 Jest 文档就马上会用了。

Jest 特性

  • 性能非常好,快速反馈
  • 用法非常简单,3 分钟快速上手
  • 容易安装和运行,无需任何配置
  • 自带覆盖率统计工具
  • 可以在沙盒环境运行
  • 自动 watch 你的代码变动并运行测试
  • 自动 mock 函数
  • 其他测试框架都没有的快照(snapshot)测试
  • 非常简单地就能测试异步代码
  • Vue,Angular,React 框架等等都能用

安装

使用熟悉的 npm

npm install --save-dev jest

或者也可以试一下用 Yarn,总之二选一

yarn add --dev jest

然后在项目根目录的package.json配置里面加上这句

"scripts": {
"test": "jest"
}

快速上手的例子


引用一下 Jest 官网http://facebook.github.io/jest/docs/en/getting-started.html的例子。假设我们要写一个加法函数,TDD开发流程第1步,先写测试,注意名字要带有test

// sum.test.js
// 导入代码文件,test函数第1个参数是要显示的文字信息,第2个回调函数里面写测试
// expect期望 加法函数 toBe正确的结果
const sum = require('./sum') test('1加2等于3', () => {
expect(sum(1, 2)).toBe(3)
})

TDD 开发流程第 2 步,我们用npm test来运行测试,毫无疑问这个测试会失败,因为要测试的函数根本不存在。这是非常正确的做法,因为我们如果要成功,先要学会失败。

TDD 开发流程第 3 步,现在再来实现这个加法函数:

// sum.js
// 文件名很重要,你发现命名规律了吗?
// 和测试放在同一个目录,并且要导出
function sum(a, b) {
return a + b
}
module.exports = sum

然后可以再次运行npm test来看测试结果:

PASS  ./sum.test.js
✓ 1加2等于3 (5ms)

TDD 开发流程第 4 步,不断强化你的测试,然后又强化你的代码,重复这 4 个步骤。所谓道高一尺,魔高一丈,测试和代码都会逐渐变得符合你的需求。

这篇只是 Jest 入门教程,只讲了一个非常简单的例子,人人都会写,想要了解更多,可以去 Jest 官网http://facebook.github.io/jest查看文档,全都是些一看就懂的例子,不会有特别深奥的东西,全都靠你熟能生巧。

使用 Jest 进行愉快的 JavaScript(TypeScript) 测试的更多相关文章

  1. 自己实现的一款在线Javascript正则表达式测试器——JRE-Parser

    本文最初发布于我的个人博客:http://jerryzou.com/posts/jreparser/ 昨天在看<正则表达式30分钟入门教程>的时候,看到博主自己实现了一个C#写的正则测试器 ...

  2. 【已解决】在 Visual Studio 中设置 JavaScript/TypeScript 的断点 脚本出现自动中断错误

    运行ASP.NET Core 程序出现错误如下: 已启用 Visual Studio 中的 Chrome 脚本调试 在 Visual Studio 中设置 JavaScript/TypeScript ...

  3. 使用 Jest 和 Supertest 进行接口端点测试

    如何创建测试是一件困难的事.网络上有许多关于测试的文章,却从来不告诉你他们是如何开始创建测试的. 所以,今天我将分享我在实际工作中是如何从头开始创建测试的.希望能够对你提供一些灵感. 目录: 使用 E ...

  4. Jest+Enzyme React js/typescript测试环境配置案例

    本文案例github:https://github.com/axel10/react-jest-typescript-demo 配置jest的react测试环境时我们可以参考官方的配置教程: http ...

  5. 可进行JavaScript代码测试与调试的12个网站

    概述:JavaScript是网站前端开发最为重要的一门编程语言,本文收集了能够在线测试与调试JavaScript代码的12个网站 1.JS Bin JS bin是一个为JavaScript和CSS爱好 ...

  6. javascript进阶——测试和打包分发

    建立一个面向对象的好的代码基础后,为了达到代码重用的目的,通过调试使用适当的测试用例进行测试尤为必要,之后就是打包分发的主题. 一.调试与测试 1.调试 Firebug:包含了错误控制台.调试器.DO ...

  7. 【转】JavaScript => TypeScript 入门

    几个月前把 ES6 的特性都过了一遍,收获颇丰.现在继续来看看 TypesScript(下文简称为 “TS”).限于经验,本文一些总结如有不当,欢迎指正. 官网有这样一段描述: TypeScript ...

  8. javascript 命令方式 测试例子

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. javascript小测试

     测试地址:http://toys.usvsth3m.com/javascript-under-pressure/ 在群里看到测试网站做着玩,希望你能过关,不能,且看下面答案(为了过关,不惜不够严谨) ...

随机推荐

  1. 用什么库写 Python 命令行程序?看这一篇就够了

    作者:HelloGitHub-Prodesire HelloGitHub 的<讲解开源项目>系列,项目地址:https://github.com/HelloGitHub-Team/Arti ...

  2. 如何在OpenStack中对云主机类型进行重新配置

    目标:很多用户在OpenStack启动一个虚拟机,选择了一个云主机配置类型,例如2CPU 4GB内存,使用了一段时间,感觉这个配置并不能满足需求,所以希望能够提高配置,那么OpeNStack的管理界面 ...

  3. Ceph 存储集群3-部署:

    ceph-deploy 工具是一种部署 Ceph 的方法,它只依赖到服务器的 SSH 访问. sudo 和 Python .它可在你的工作站上运行,不需要服务器.数据库.或其它工具.如果你安装.拆卸过 ...

  4. sockaddr与sockaddr_in的关系

    WIN7+VS2013 sockaddr // // Structure used to store most addresses. // typedef struct sockaddr { #if ...

  5. MSVC下快速Unicode I/O

    http://blog.kingsamchen.com/archives/863 如果需要往console输出包含非ASCII字符的宽字符串,一个比较快速的方法是使用WriteConsoleW这个AP ...

  6. Flyway 的使用及Spring Boot集成Flyway

    一.简单介绍 Flyway 是一个开源.跨环境的数据库迁移工具,它强烈主张简单性和约定性而不是配置. Flyway 是一个便于多人开发对数据库管理的工具,将sql语句写入文件中,只需要在控制台输入指令 ...

  7. 20191228--python学习第四天

    今日内容: 列表 元组 内容回顾与补充 1.计算机基础 硬件:CPU/内存/硬盘/主板/网卡 操作系统:linux(免费/开源) centos/ubuntu/redhat   windows   ma ...

  8. Linux相关知识笔记

    Quagga要在linux下编译并配置运行,所有,学习一点linux的基础知识. 安装的Ubuntu,用户名linux,密码1 使能Ubuntu的IP转发功能,需要修改etc/sysctl.conf和 ...

  9. Python 实现转堆排序算法原理及时间复杂度(多图解释)

    原创文章出自公众号:「码农富哥」,欢迎转载和关注,如转载请注明出处! 堆基本概念 堆排序是一个很重要的排序算法,它是高效率的排序算法,复杂度是O(nlogn),堆排序不仅是面试进场考的重点,而且在很多 ...

  10. vue简单实现

    vue简单实现 vue的三个核心 虚拟dom, 双向绑定 Proxy,