Jest - Getting Started
文章目录

Jest: Getting Started

初始化 package.json

1
npm init -y

安装 Jest 及相关依赖

1
npm install -D jest

编写测试

直接上例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
const temperatureAlert = require('./temperatureAlert');

const testCase = [
/*
format:
[
[thd_freeze, thd_boiling, fluctuation],
input,
output,
desc,
]
*/
[
[0, 100, 0.5],
`4.0 1.0 0.5 0.0 -0.5 0.0 0.5 0.0 -2.0 0.0 0.5 0.6 2.0`,
`4.0 1.0 0.5 0.0 freezing -0.5 0.0 0.5 0.0 -2.0 0.0 0.5 0.6 unfreezing 2.0`,
`Normal Case 1`,
],
[
[0, 100, 0.5],
`5.0 -0.5 0.5 -0.2 100 101`,
`5.0 -0.5 freezing 0.5 -0.2 100 unfreezing boiling 101`,
`Normal Case 2`,
],
[
[0, 100, 0.5],
`0.0 0.3 0.5 0.4 0.7`,
`0.0 freezing 0.3 0.5 0.4 0.7 unfreezing`,
`Normal Case 3`,
],
[
[0, 100, 0.5],
`anti 996`,
`Error: Bad Input`,
`Bad Input Case 1`,
],
[
[0, 100, 0.5],
`!@#!@$%#$^ 乱 45487 码 %#$$%%/*-+ 测 6656+/*-* 试 %$&$%*^*`,
`Error: Bad Input`,
`Bad Input Case 2`,
],
[
[0, 100, 0.5],
`0.0 0.5 0.6 2.0`,
`0.0 freezing 0.5 0.6 unfreezing 2.0`,
`Normal Case 4`,
],
[
[0, 100, 'abc'],
`0.0 0.5 0.6 2.0`,
`Error: Bad Input`,
`Bad Input Case 3`,
],
[
['996 IS REALLY BAD'],
`0.0 0.3 0.5 0.4 0.7`,
`Error: Bad Input`,
`Bad Input Case 4`,
],
[
[0, 100],
`0.0 0.6 0.5 0.1 -0.5 0.5`,
`Error: Bad Input`,
`Bad Input Case 5`,
],
]

testCase.forEach(e => {
let [input, output, desc, threshold_Freeze, threshold_Boiling, fluctuation,] = [e[1], e[2], e[3], e[0][0], e[0][1], e[0][2],];
test(desc, () => {
expect(temperatureAlert.getTemperatureAlert(input, threshold_Freeze, threshold_Boiling, fluctuation))
.toBe(output);
});
})

以及这里延时操作的例子:

1
2
3
4
5
test('Hello Alizon', () => {
axios.get('http://localhost:4000/checkout/').then(data => {
expect(data).toBe('Hello World')
})
});

这里的 test 方法一些 JSlinter 可能会说找不到但是没有问题

![](Getting Started/f5069ab8-2fb5-43b0-a83b-9d01d204f509.png)

关于 ES6 支持

1
babel-jest babel-core babel-preset-env regenerator-runtime

babel-jestbabel-coreregenerator-runtimebabel-preset-env 这几个依赖是为了让我们可以使用 ES6 的语法特性进行单元测试,ES6 提供的 import 来导入模块的方式,Jest 本身是不支持的。

添加. babelrc 文件

在项目的根目录下添加 .babelrc 文件,并在文件复制如下内容:

1
2
3
{
"presets": ["env"]
}

** 修改 package.json 中的 test 脚本 **

打开 package.json 文件,将 script 下的 test 的值修改为 jest

1
2
3
"scripts": {
"test": "jest"
}