📜  用 Jest 进行测试(1)

📅  最后修改于: 2023-12-03 15:27:09.088000             🧑  作者: Mango

用 Jest 进行测试

Jest 是一个著名的 JavaScript 测试框架,它具有简单易用,速度快,可扩展性强等诸多优点。本文将向你介绍如何使用 Jest 进行测试。

安装 Jest

安装 Jest 非常简单,只需要在命令行中运行以下命令:

npm install --save-dev jest

我们建议把 Jest 添加到 devDependencies 中,因为它是一个开发工具,不应该被部署到生产环境中。

创建测试文件

下一步我们需要创建一个测试文件。通常我们将测试文件存放在与被测试的代码相同的目录中,只是文件名以 .test.js.spec.js 结尾。

下面是一个简单的测试文件示例:

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

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

这个测试文件引入了一个名为 sum 的模块,并测试了它的一个函数。测试的方式非常简单:我们期望 sum(1, 2) 的返回值应该等于 3。如果不等于,测试就会失败。

运行测试

运行测试也非常简单,只需要在命令行中运行 npx jest 命令就行了。Jest 会查找项目中所有以 .test.js.spec.js 结尾的文件,并对它们进行测试。

当测试成功时,输出如下:

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

如果测试失败,则输出如下:

FAIL  ./sum.test.js
  ✕ adds 1 + 2 to equal 3 (6 ms)

  ● adds 1 + 2 to equal 3

    expect(received).toBe(expected) // Object.is equality

    Expected: 4
    Received: 3

      4 | 
      5 | test('adds 1 + 2 to equal 4', () => {
    > 6 |   expect(sum(1, 2)).toBe(4);
        |                       ^
      7 | });

      at Object.toBe (sum.test.js:6:23)
断言

在测试中,我们可以使用 Jest 提供的丰富的断言库来验证我们的代码。下面是一些常用的断言:

expect(value)

这是最基本的断言,它用来验证一个值是否等于另一个值。

test('two plus two is four', () => {
  expect(2 + 2).toBe(4);
});
.not

这个断言和 expect 配合使用,用来验证某个值不应该等于另一个值。

test('adding positive numbers is not zero', () => {
  for (let a = 1; a < 10; a++) {
    for (let b = 1; b < 10; b++) {
      expect(a + b).not.toBe(0);
    }
  }
});
.toEqual

这个断言用来验证两个对象是否相等。

test('object assignment', () => {
  const data = {one: 1};
  data['two'] = 2;
  expect(data).toEqual({one: 1, two: 2});
});
.toContain

这个断言用来验证一个数组或类数组是否包含某个元素。

test('the shopping list has milk on it', () => {
  const shoppingList = [
    'diapers',
    'kleenex',
    'trash bags',
    'paper towels',
    'milk'
  ];
  expect(shoppingList).toContain('milk');
});
总结

Jest 是一个简单易用的 JavaScript 测试框架,它可以帮助我们快速验证代码的正确性,从而保证代码质量。在实际开发中,我们应该养成写测试的好习惯,让测试成为我们开发的一部分。