【问题标题】:What is the difference between describe and it in Jest?Jest 中的 describe 和 it 有什么区别?
【发布时间】:2015-11-10 09:06:12
【问题描述】:

JestJasmine 中编写单元测试时,您什么时候使用describe

你什么时候使用it

我经常这样做

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

什么时候需要新的describe 或新的it

【问题讨论】:

    标签: jasmine jestjs


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        正如我在question 中提到的,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

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

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

        【讨论】:

          猜你喜欢
          • 2018-01-28
          • 1970-01-01
          • 2021-12-04
          • 2021-02-20
          • 1970-01-01
          • 2019-10-12
          • 2017-07-25
          • 2017-12-24
          • 2017-12-16
          相关资源
          最近更新 更多