npm install --save-dev jest
# package.json:
{
"scripts": {
"test": "jest"
}
}
#index.js
function sum(a, b) {
return a + b;
}
module.exports = sum;
#index.test.js
const sum = require('./index');
test('adds 1 + 2 to equal 3', () => {
expect(sum(1, 2)).toBe(3);
});
npm run test
- 测试后 Jest 将打印测试信息
- describe 和 test 块的执行顺序:
Jest 会在所有真正的测试开始之前执行测试文件里所有的 describe 处理程序,当 describe 块运行完后,,默认情况下,Jest 会按照 test 出现的顺序依次运行所有测试;
注意顶级的beforeEach
会比 describe
中的beforeEach
执行的更早。 下面的代码也许能帮助你理解所有 hook 的执行顺序。
beforeAll(() => console.log('1 - beforeAll'));
afterAll(() => console.log('1 - afterAll'));
beforeEach(() => console.log('1 - beforeEach'));
afterEach(() => console.log('1 - afterEach'));
test('', () => console.log('1 - test'));
describe('Scoped / Nested block', () => {
beforeAll(() => console.log('2 - beforeAll'));
afterAll(() => console.log('2 - afterAll'));
beforeEach(() => console.log('2 - beforeEach'));
afterEach(() => console.log('2 - afterEach'));
test('', () => console.log('2 - test'));
});
// 1 - beforeAll
// 1 - beforeEach
// 1 - test
// 1 - afterEach
// 2 - beforeAll
// 1 - beforeEach
// 2 - beforeEach
// 2 - test
// 2 - afterEach
// 1 - afterEach
// 2 - afterAll
// 1 - afterAll
- 1.describe: 来将测试分组;
当
before
和after
的块在describe
块内部时,则其只适用于该describe
块内的测试。
- 2.test:
test(name, fn, timeout)
,第一个参数是测试名称; 第二个参数是包含测试期望的函数
还有别名:
it(name, fn, timeout)
-
3.
expect(value)
:- .toEqual()
.toBe(value)
测试即运行结果是否与我们预期结果一致 断言函数用来验证结果是否正确
exspect(运行结果).toBe(期望的结果);
//常见断言方法
expect({a:1}).toBe({a:1})//判断两个对象是否相等
expect(1).not.toBe(2)//判断不等
expect({ a: 1, foo: { b: 2 } }).toEqual({ a: 1, foo: { b: 2 } })
expect(n).toBeNull(); //判断是否为null
expect(n).toBeUndefined(); //判断是否为undefined
expect(n).toBeDefined(); //判断结果与toBeUndefined相反
expect(n).toBeTruthy(); //判断结果为true
expect(n).toBeFalsy(); //判断结果为false
expect(value).toBeGreaterThan(3); //大于3
expect(value).toBeGreaterThanOrEqual(3.5); //大于等于3.5
expect(value).toBeLessThan(5); //小于5
expect(value).toBeLessThanOrEqual(4.5); //小于等于4.5
expect(value).toBeCloseTo(0.3); // 浮点数判断相等
expect('Christoph').toMatch(/stop/); //正则表达式判断
expect(['one','two']).toContain('one'); //不解释