你的浏览器不支持canvas

Enjoy life!

jest - describe

Date: Author: JM

本文章采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可。

一、describe(name, fn)

  • describe(name, fn):创建一个区块,将一些“测试套件”(test suite)中的相关测试组合在一起。

  • 例子:

const myBeverage = {
  delicious: true,
  sour: false
};

describe('my beverage', () => {
  // is delicious
  test('is delicious', () => {
    expect(myBeverage.delicious).toBeTruthy();
  })
  
  // is not sour
  test('is not sour', () => {
    expect(myBeverage.sour).toBeFalsy();
  })
})
  • describe(name, fn) 不是必须的,你可以将测试区块(test block),即:测试案例抽出来写,但是如果你使用了describe(name, fn),能让你的测试案例分好组,比较清晰。

  • 你也可以嵌套describe块,如果你希望有层次结构的测试。

const binaryStringToNumber = binString => {
  if (!/^[01]+$/.test(binString)) {
    throw new CustomError('Not a binary number');
  }
  
  return parseInt(binString, 2);
}

describe('binaryStringToNumber', () => {
  // 无效的二进制字符串
  describe('given an invalid binary string', () => {
    // 字符串中不存在数字
    test('composed of non-numbers throws CustomError', () => {
      expect(() => binaryStringToNumber('abc')).toThrowError(CustomError);
    });
    
    // 存在空白符
    test('with extra whitespace throws CustomError', () => {
      expect(() => binaryStringToNumber(` 
      100`)).toThrowError(CustomError);
    })
  })
  
  // 有效的二进制字符串
  describe('given a valid binary string', () => {
    test(`return the correct number`, () => {
      expect(binaryStringToNumber(`100`)).toBe(4);
    })
  })
})

对于本文内容有问题或建议的小伙伴,欢迎在文章底部留言交流讨论。