Node.js 使用 Jest 做单元测试

Jest 简介

Jest 是一个越来越流行的测试框架,使用率渐渐超过了Mocha, 这些项目都在使用 Jest:Babel、 TypeScript、 Node、 React、 Angular、 Vue 等等!

Jest 的目标是在大部分 JavaScript 项目上实现开箱即用, 无需配置。

从 it 到 expect - Jest 将整个工具包放在同一个 地方。好书写、好维护、非常方便。

快速上手

npm install --save-dev jest

下面我们开始给一个假定的函数写测试,这个函数的功能是两数相加。首先创建 sum.js 文件:

function sum(a, b) {
  return a + b;
}
module.exports = sum;

接下来,创建名为 sum.test.js 的文件。这个文件包含了实际测试内容:

const sum = require('./sum');

test('adds 1 + 2 to equal 3', () => {
  expect(sum(1, 2)).toBe(3);
});

将如下代码添加到 package.json 中:

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

最后,运行 yarn test 或者 npm run test ,Jest 将输出如下信息:

PASS  ./sum.test.js
✓ adds 1 + 2 to equal 3 (5ms)

在此测试中,使用了 expect 和 toBe 来检测两个值是否完全相同。若要了解其它使用 Jest 可以测试的内容,请参阅使用匹配器(Matcher) https://jestjs.io/docs/expect。

如果有多个 *.test.js 这样的文件,执行 jest 命令以后,每个文件都会被执行。每个文件都是一个 Test Suites


BDD风格的测试

BDD是“行为驱动的开发”(Behavior-Driven Development)的简称。BDD认为,不应该针对代码的实现细节写测试,而是要针对行为写测试。BDD测试的是行为,即软件应该怎样运行。BDD的特征就是使用describe()和it() 这两个方法。

const assert = require('assert');
const tools = require("../../utils/tools");

describe('测试套件', function () {
  it('测试用例', function () {
    assert.ok(1, 'ssss'); //断言条件
  });

  it('当值不存在时应该返回 -1', function () {
    assert.equal(-1, [1, 2, 3].indexOf(5));
    assert.equal(-1, [1, 2, 3].indexOf(0));
  });

  var ts = new Date(Date.parse('2021-12-10T23:10:23'));
  ts = ts.getTime();

  it('参数是毫秒', () => {
    var dateTime = tools.formatDateTime(ts);
    assert.equal(dateTime, "2021-12-10 23:10:23", "时间不正确");
  });
});


参考:https://blog.csdn.net/yhc166188/article/details/102881306

修改时间 2022-03-22

真诚赞赏,手留余香
赞赏
MySQL
数据库中间表应该如何命名
2022-02-16
JavaScript,Node.js
Node.js 使用 Jest 和 supertest 做接口测试
2022-02-22
ngtwewy
随机推荐
ffmpeg 拼接视频报错,Found duplicated MOOV Atom. Skipped
Nginx location 匹配顺序
怪异模式(Quirks Mode)导致 button 和 input 的大小不统一原因
nginx 的过时模式 TLS 1.0 或 TLS 1.1 被起用,无法禁止的解决办法
curl 的用法指南
Koa.js 中间件 koa-session
Rollup 教程
Node.js MySQL2 如何编写事务
Debian11 安装笔记4:安装常用软件
MySQL 删除多余重复的记录,只保留一条

微信联系我

夜间模式切换
回到顶部