jest에서 'it'과 'test'의 차이점은 무엇입니까?


280

테스트 그룹에 두 가지 테스트가 있습니다. 하나는 그것을 사용하고 다른 하나는 테스트를 사용하며 매우 유사하게 작동하는 것 같습니다. 그들 사이의 차이점은 무엇입니까?

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

최신 정보:

그 것 test입니다 농담의 공식 APIit이 아니다.


it다른 프레임 워크에서 익숙하고 마이그레이션하기 위해있을 수 있습니다.
Andrew Li

23
다른 점이 없다. 이 문서 test에는 별명에 명시 되어 it있습니다.
Claies

답변:



34

그들은 똑같은 일을하지만 그들의 이름은 다르고 시험 이름과의 상호 작용과 다릅니다.

테스트

당신의 글 :

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

무언가 실패하면 얻는 것 :

yourModule > if it does this thing

그것

당신의 글:

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

무언가 실패하면 얻는 것 :

yourModule > should do this thing

기능에 관한 것이 아니라 가독성에 관한 것입니다. 내 생각에, it당신이 직접 작성하지 않은 테스트 실패의 결과를 읽을 때 실제로 포인트가 있습니다. 테스트가 무엇인지 더 빨리 이해하는 데 도움이됩니다.


4
일부는 짧은 it('does this thing', () => {})대신 선호it('should do this thing', () => {}
gwildu

대안 적으로, test('thing should do x')보다 선호 될 수 it('Should do X')로서 it종종 모호하다.
mikemaccana

21

다른 답변이 명확했듯이 동일한 작업을 수행합니다.

나는 두 가지가 1) " RSpec "스타일 테스트 를 허용하도록 제공된다고 생각한다 .

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

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

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

또는 2) " xUnit "스타일 테스트는 다음과 같습니다.

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

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

문서 :


2

jest 문서에서 알 수 있듯이 https://jestjs.io/docs/en/api#testname-fn-timeout

테스트 (이름, fn, 시간 초과)

또한 별칭 아래에서 : it (name, fn, timeout)

그리고 설명은 테스트를 그룹으로 구성하기를 원하는 경우를위한 것입니다 : 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

Jest는 왜 정확히 동일한 기능을 위해 두 가지 버전이 있는지 언급하지 않았습니다. 내 생각 엔, 그것은 단지 컨벤션만을위한 것입니다. 단위 테스트 테스트 통합 테스트를 위해 테스트합니다.


-22

그들은 같은 것입니다. 프로그래밍 언어로 TypeScript를 사용하고 있으며, @@ types / jest / index.d.ts의 jest 패키지 소스 코드에서 정의 파일을 살펴보면 다음 코드를 볼 수 있습니다. 분명히 'test'라는 다른 이름이 많이 있으며 그중 하나를 사용할 수 있습니다.

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
당신이 보여 코드는 아닙니다 ittest같은 일이다. 그것은 그들의 유형이 동일하다는 것을 의미합니다. 나는 그렇게 생각하지 않습니다 beforeAllafterAll그 유형이 동일 할지라도 같은 일이다.
realUser404

2
xit and xtest테스트를 건너 뛰고 테스트 it, fit, test를 실행합니다. 답변 주셔서 감사합니다.
Akash
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.