Jest中的“it”和“test”有什么区别?

2022-08-29 22:59:33

我的测试组中有两个测试。其中一个测试使用,另一个使用 。他们两者的工作方式似乎非常相似。它们之间有什么区别?ittest

describe('updateAll', () => {
  it('no force', () => {
    return updateAll(TableName, ["fileName"], {compandId: "test"})
        .then(updatedItems => {
          let undefinedCount = 0;
          for (let item of updatedItems) {
            undefinedCount += item === undefined ? 1 : 0;
          }
          // console.log("result", result);
          expect(undefinedCount).toBe(updatedItems.length);
        })
  });

  test('force update', () => {
    return updateAll(TableName, ["fileName"], {compandId: "test"}, true)
        .then(updatedItems => {
          let undefinedCount = 0;
          for (let item of updatedItems) {
            undefinedCount += item === undefined ? 1 : 0;
          }
          // console.log("result", result);
          expect(undefinedCount).toBe(0);
        })
  });
});

这似乎是在Jest的官方API中,但不是。testit


答案 1

Jest文档声明它是测试的别名。因此,从功能的角度来看,它们是完全相同的。它们的存在是为了能够从测试中做出可读的英语句子。


答案 2

他们做同样的事情,但他们的名字是不同的,并且他们与测试名称的相互作用。

test

你写什么:

describe('yourModule', () => {
  test('if it does this thing', () => {});
  test('if it does the other thing', () => {});
});

如果出现问题,您将获得什么:

yourModule > if it does this thing

it

你写什么:

describe('yourModule', () => {
  it('should do this thing', () => {});
  it('should do the other thing', () => {});
});

如果出现问题,您将获得什么:

yourModule > should do this thing

因此,这是关于可读性而不是功能。

在我看来,当涉及到阅读你自己没有写的失败测试的结果时,确实有一点。它有助于更快地了解测试的内容。it

一些开发人员还缩短了哪个更短,并且在语义上也适合符号。Should do this thingDoes this thingit