Jest中describe和it有什么区别?


79

在编写单元测试时JestJasmine何时使用describe

it什么时候使用?

我通常会

describe('my beverage', () => {
  test('is delicious', () => {
  });
});

什么时候来新的describe或新的it

Answers:


116

describe将您的测试套件分解为组件。根据您的测试策略,您可能对类中的每个功能,插件的每个模块或每个面向用户的功能都有一个描述。

您还可以嵌套描述以进一步细分套件。

it是您执行个别测试的地方。您应该能够像一个小句子那样描述每个测试,例如“设置半径时计算面积”。您不应该进一步细分测试-如果您觉得需要,可以describe改用。

describe('Circle class', function() {
  describe('area is calculated when', function() {
    it('sets the radius', function() { ... });
    it('sets the diameter', function() { ... });
    it('sets the circumference', function() { ... });
  });
});

19

正如我在这个问题中提到的,describe用于分组,it用于测试。

正如笑话文档说,testit是相同的: https://jestjs.io/docs/en/api#testname-fn-timeout

测试(名称,fn,超时)

同样在别名下:it(name,fn,timeout)

并且describe仅适用于您希望将测试分为几组的情况:https : //jestjs.io/docs/en/api#describename-fn

describe(名称,fn)

describe(name, fn)创建一个将几个相关测试组合在一起的模块。例如,如果您有一个myBeverage应该是美味而不是酸的对象,则可以使用以下方法进行测试:

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

describe('my beverage', () => {
  test('is delicious', () => {
    expect(myBeverage.delicious).toBeTruthy();
  });

  test('is not sour', () => {
    expect(myBeverage.sour).toBeFalsy();
  });
});

这不是必需的-您可以直接在顶层编写测试块。但是,如果您希望将测试组织成组,这将很方便。


1

我更多是从对测试输出的影响来考虑的。通过使用describe或多级别的describe,您可以将输出分组以提高可读性。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.