添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

Jest

skip,only,each修饰符

describe test 可以连接 skip only each 修饰符。如 describe.skip('something', testFunction) ,会在测试时跳过这一个 describe only 会使测试只运行指定的测试用例,这在某个测试用例出错Debug时非常好用。 each 修饰符可以执行多次参数不同的测试,它接受一个数组 table 和一个测试函数, table 里的元素会作为参数传入测试函数。具体语法可以参见 文档

beforeAll,afterAll,beforeEach,afterAll钩子函数

Jest也支持在执行测试用例之前以及之后执行一些代码来做一些工作,像在测试前设置好测试数据、在测试后清理测试数据。这些工作可以作为 beforeAll afterAll beforeEach afterAll 的回调函数。

断言

Jest支持 expect 式的断言,像 expect(1).toBe(1) ,其中 toBe 就是断言部分。Jest支持很丰富的断言。

相等断言

断言两个基本类型的值相等使用 expect(val1).toBe(val2) 。注意 toBe 断言使用 Object.is() 判断相等。它与 == 以及 === 都有不同。

如果要断言数组或者Object相等,使用 toEqual 断言。它会递归地判断每个属性/元素是否是相等的。

如果要断言数组或者Object相等,使用 toEqual 断言。它会递归地判断每个属性/元素是否是相等的。

toStrictEqual(value)

测试对象具有相同的类型和结构

.toEqual 不同在于:

  • 检查具有未定义属性的键。 例如 使用.toStrictEqual时,{a:未定义,b:2}与{b:2}不匹配。
  • 检查数组。 例如 使用.toStrictEqual时,[,1]与[undefined,1]不匹配
  • 检查对象类型是否相等。 例如 具有字段a和b的类实例将不等于具有字段a和b的文字对象。
  • 数字大小断言
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    test('two plus two', () => {
    const value = 2 + 2;
    expect(value).toBeGreaterThan(3);//大于
    expect(value).toBeGreaterThanOrEqual(3.5);//大于等于
    expect(value).toBeLessThan(5);//小于
    expect(value).toBeLessThanOrEqual(4.5);//小于等于

    //等于
    expect(value).toBe(4);
    expect(value).toEqual(4);
    });

    对于浮点数,不能使用 toBe 或者 toEqual 进行相等断言。Jest提供了 toBeCloseTo 断言,可以在忽略一定误差的情况下,断言浮点数相等。

    1
    2
    3
    4
    5
    test('adding floating point numbers', () => {
    const value = 0.1 + 0.2;
    //expect(value).toBe(0.3); This won't work because of rounding error
    expect(value).toBeCloseTo(0.3); // This works.
    });
    真值断言(Truthiness)