Was ist der Unterschied zwischen "es" und "Test" im Scherz?


279

Ich habe zwei Tests in meiner Testgruppe. Einer benutzt es, der andere benutzt Test und sie scheinen sehr ähnlich zu funktionieren. Was ist der Unterschied zwischen ihnen?

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);
        })
  });
});

AKTUALISIEREN:

Es scheint, dass dies testin der offiziellen API von Jest enthalten ist , aber itnicht.


itkönnte nur für Vertrautheit und Migration von anderen Frameworks da sein.
Andrew Li

23
es gibt keinen Unterschied. In der Dokumentation wird eindeutig angegeben, dass testder Alias ​​lautet it.
Claies

Antworten:



34

Sie machen das Gleiche, aber ihre Namen sind unterschiedlich und damit ihre Interaktion mit dem Namen des Tests.

Prüfung

Was schreiben Sie:

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

Was Sie bekommen, wenn etwas ausfällt:

yourModule > if it does this thing

es

Was Du schreibst:

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

Was Sie bekommen, wenn etwas ausfällt:

yourModule > should do this thing

Es geht also um Lesbarkeit, nicht um Funktionalität. Meiner Meinung nach hat es itwirklich Sinn, das Ergebnis eines fehlgeschlagenen Tests zu lesen, den Sie nicht selbst geschrieben haben. Es hilft, schneller zu verstehen, worum es beim Test geht.


4
Einige bevorzugen auch it('does this thing', () => {})anstatt it('should do this thing', () => {}als seine kürzere
Gwildu

Alternativ test('thing should do x')kann bevorzugt werden, it('Should do X')da dies itoft vage ist.
Mikemaccana

21

Wie die anderen Antworten klargestellt haben, tun sie dasselbe.

Ich glaube, die beiden werden angeboten, um entweder 1) " RSpec " -Stiltests wie:

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

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

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

oder 2) " xUnit " -Stiltests wie:

function sum(a, b) {
  return a + b;
}

test('sum adds 1 + 2 to equal 3', () => {
  expect(sum(1, 2)).toBe(3);
});

Docs:


2

Wie die Scherzdokumente sagen, sind sie dieselben: https://jestjs.io/docs/en/api#testname-fn-timeout

Test (Name, FN, Timeout)

Auch unter dem Alias: it (Name, FN, Timeout)

und beschreiben ist nur für den Fall gedacht, dass Sie Ihre Tests in Gruppen organisieren möchten: https://jestjs.io/docs/en/api#describename-fn

beschreiben (Name, fn)

describe(name, fn)Erstellt einen Block, der mehrere verwandte Tests zusammenfasst. Wenn Sie beispielsweise ein myBeverage-Objekt haben, das köstlich, aber nicht sauer sein soll, können Sie es testen mit:

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

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

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

Dies ist nicht erforderlich - Sie können die Testblöcke direkt auf der obersten Ebene schreiben. Dies kann jedoch nützlich sein, wenn Sie es vorziehen, Ihre Tests in Gruppen zu organisieren.


-4

Jest hat nicht erwähnt, warum sie zwei Versionen für genau die gleiche Funktionalität haben. Ich vermute, es ist nur für Konventionen. Test für Unit-Tests für Integrationstests.


-22

Sie sind das gleiche. Ich verwende TypeScript als Programmiersprache, und wenn ich in die Definitionsdatei aus dem Quellcode des Scherzpakets von /@types/jest/index.d.ts schaue, sehe ich die folgenden Codes. Offensichtlich gibt es viele verschiedene Namen von "Test", Sie können jeden von ihnen verwenden.

declare var beforeAll: jest.Lifecycle;
declare var beforeEach: jest.Lifecycle;
declare var afterAll: jest.Lifecycle;
declare var afterEach: jest.Lifecycle;
declare var describe: jest.Describe;
declare var fdescribe: jest.Describe;
declare var xdescribe: jest.Describe;
declare var it: jest.It;
declare var fit: jest.It;
declare var xit: jest.It;
declare var test: jest.It;
declare var xtest: jest.It;


25
Der Code, den Sie anzeigen, zeigt dies nicht an itund testist dasselbe. Es bedeutet nur, dass ihr Typ der gleiche ist. Ich denke das nicht beforeAllund bin afterAlldasselbe, obwohl ihr Typ der gleiche ist.
realUser404

2
xit and xtestÜberspringt die Tests, it, fit, testum Tests auszuführen. Danke für deine Antwort.
Akash
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.