Jest单元测试框架

时间: 2020-01-07阅读: 65标签: 测试

Jest

facebook推出的js单元测试的语言
1.首先需要在项目文档中安装jest包
2.创建需要进行单元测试的源代码函数
3.创建测试文件,包含实际的测试代码


1 安装Jest

1.1 初始化package.json
在命令行工具中输入以下命令,初始化前端项目并生成package.json:

npm init -y

1.2 安装Jest及相关依赖
在命令行工具中输入以下命令,安装测试所需要的依赖:

npm install -D jest babel-jest babel-core babel-preset-env regenerator-runtime

babel-jest、 babel-core、 regenerator-runtime、babel-preset-env这几个依赖是为了让我们可以使用ES6的语法特性进行单元测试,ES6提供的 import 来导入模块的方式,Jest本身是不支持的。
1.3 添加.babelrc文件
在项目的根目录下添加.babelrc文件,并在文件复制如下内容:

{
  "presets": ["env"]
}

1.4 修改package.json中的test脚本
打开package.json文件,将script下的test的值修改为jest:

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

2. 编写你的第一个Jest测试

创建src和test目录及相关文件

  • 在项目根目录下创建src目录,并在src目录下添加functions.js文件
  • 在项目根目录下创建test目录,并在test目录下创建functions.test.js文件

Jest会自动找到项目中所有使用.spec.js或.test.js文件命名的测试文件并执行,通常我们在编写测试文件时遵循的命名规范:测试文件的文件名 = 被测试模块名 + .test.js,例如被测试模块为functions.js,那么对应的测试文件命名为functions.test.js。

在src/functions.js中创建被测试的模块

export default {
  sum(a, b) {
    return a + b;
  }
}

在test/functions.test.js文件中创建测试用例

import functions  from '../src/functions';

test('sum(2 + 2) 等于 4', () => {
  expect(functions.sum(2, 2)).toBe(4);
})

运行npm run test, Jest会在shell中打印出以下消息:

 PASS  test/functions.test.js
√ sum(2 + 2) 等于 4 (7ms)

Test Suites: 1 passed, 1 total
Tests:       1 passed, 1 total
Snapshots:   0 total
Time:        4.8s

3.常用的几个Jest断言

上面测试用例中的expect(functions.sum(2, 2)).toBe(4)为一句断言,Jest为我们提供了expect函数用来包装被测试的方法并返回一个对象,该对象中包含一系列的匹配器来让我们更方便的进行断言,上面的toBe函数即为一个匹配器。我们来介绍几种常用的Jest断言,其中会涉及多个匹配器。
.not

//functions.test.js
import functions  from '../src/functions'

test('sum(2, 2) 不等于 5', () => {
  expect(functions.sum(2, 2)).not.toBe(5);
})

.not修饰符允许你测试结果不等于某个值的情况,这和英语的语法几乎完全一样,很好理解。
.toEqual()

// functions.js
export default {
  getAuthor() {
    return {
      name: 'LITANGHUI',
      age: 24,
    }
  }
}
// functions.test.js
import functions  from '../src/functions';

test('getAuthor()返回的对象深度相等', () => {
  expect(functions.getAuthor()).toEqual(functions.getAuthor());
})

test('getAuthor()返回的对象内存地址不同', () => {
  expect(functions.getAuthor()).not.toBe(functions.getAuthor());
})

.toEqual匹配器会递归的检查对象所有属性和属性值是否相等,所以如果要进行应用类型的比较时,请使用.toEqual匹配器而不是.toBe。


吐血推荐

1.站长广告联盟: 整理了目前主流的广告联盟平台,如果你有流量,可以作为参考选择适合你的平台点击进入...

2.休闲娱乐: 直播/交友    优惠券领取   网页游戏   H5游戏

链接: http://www.fly63.com/article/detial/7316

Js测试框架

Jest是Facebook团队构建和维护的JavaScript测试框架,基于Jasmine的JavaScript单元测试框架。Jest在2018年接受度非常高,今年在JavaScript社区更是如此,根据Github的数据,目前超过150万个项目在使用Jest

开发中的测试名词解释

Alpha测试是由用户在开发环境下进行的测试,也可以是开发机构内部的用户在模拟实际操作环境下进行的测试,测试环境受开发方控制,用户数量相对较少

API测试工具

越来越多的公司正在向DevOps的方向左转,以实现持续集成和持续部署开发。这意味着我们的反馈需要比以往更快,以便确定我们的应用程序是否准备好交付。这就是API测试如此重要的原因

Appium介绍

appium是一个自动化测试开源工具,支持IOS、Android平台上的原生应用、web应用和混合应用;原生应用:是指使用ios或者android编写的应用,Appium是Node.js写的http服务器,用来创建和控制webDriver的session。

Vuex 之单元测试[译]

通常来说 Vue 组件会在以下方面和 Vuex 发生交互:commit 一个 mutation、dispatch 一个 action、通过 $store.state 或 getters 访问 state

10 款最佳移动 App 安全测试工具

移动互联网时代,我们的生活和工作深受 App 影响。伴随移动 App 的广泛应用,App 安全日益重要。本文介绍了 App 开发所需的安全测试工具。TOP 10 移动 App 安全测试工具列表

Node.JS如何按顺序调用async函数,如何判断是否为async函数,在mocha中自动化测试async/await代码

在Node.JS中,如果你即不喜欢回调代码嵌套,也不喜欢promise的链式写法,可以使用async/await将程序改造成顺序执行的。async/await本质上也是由Promise实现的,具体原理可在网上搜索,那么调用时和普通函数调用有何不同?

原生js逻辑测试题及答案

屏幕打印2000到3000之间的所有的数。求450到550之间所有奇数的和。找出200以内,既能整除3又能整除5的所有数。页面弹出输入框,只有当用户输入Alice和Bob这两个名字时,才会向用户问好“你好”。

引入 Enzyme 并测试 React 组件

使用 Enzyme 库测试 React。这样可以使你的程序将更加可靠,并且更加容易避免回归。我们在这里用了 Jest,不过 Enzyme 也可以与 Mocha 和 Chai 之类的库一起使用。

神奇的 Promise: 一次异步代码的单元测试

本文适用环境为 NodeJs v12 和 2019 年 11 月 19 日最新版 Chrome。写这篇文章的起因是在写单元测试时,做形如下测试时无法使用 await 将测试代码恰好阻塞到 catch 在 Event Loop 中被调用后的时机

fly63.com版权所有,内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权,请与小编联系!情况属实本人将予以删除!

文章投稿关于web前端网站点搜索站长推荐网站地图站长QQ:522607023

小程序专栏: 土味情话心理测试脑筋急转弯幽默笑话段子句子语录成语大全