Jest中的describe和it有什么区别?

问题描述 投票:0回答:5

Jest
Jasmine
编写单元测试时,什么时候使用
describe

什么时候使用

it

我经常这样做

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

什么时候需要新的

describe
或新的
it

jasmine jestjs
5个回答
266
投票

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() { ... });
  });
});

124
投票

正如我在这个问题中提到的,

describe
用于分组,
it
用于测试。

正如笑话文档所说,

test
it
是相同的: https://jestjs.io/docs/en/api#testname-fn-timeout

测试(名称,fn,超时)

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

describe
仅适用于当您希望将测试组织成组时: https://jestjs.io/docs/en/api#describename-fn

描述(名称,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();
  });
});

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


4
投票

我更多地是从对测试输出的影响来考虑这一点。通过使用描述或多个级别的描述,您可以对输出进行分组以提高可读性。


3
投票

简单地认为

describe
是组,
it
test
是真正的单元测试。

因此,

describe
可以嵌套在
describe
中,但
it
则不能。


0
投票

根据我的记忆,test 和 in 关键字是可以互换的。下面两个是相等的。

示例01:

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

示例02:

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

并使用描述对所有测试用例和可读性进行分组。例如,

describe('my beverage', () => {
  describe('delicious', () => {
    test('when cold', () => {
    });
    test('when hot', () => {
    });
  });
});
© www.soinside.com 2019 - 2024. All rights reserved.