Jest 테스트 범위 지정

8407 단어 testing
지금까지는 최상위 수준에서 실행되는 테스트만 살펴보았습니다. 모든 테스트는 기본적으로 동일한 범위에 있습니다.

그러나 Jest는 범위를 좁힐 수 있는 옵션을 제공합니다. 이것은 반복 테스트 설정을 위해 매우 쉬울 수 있습니다.

예를 들어, 이전 기사에서 범위 지정 사용의 주요 예인 Jest recurring actions 에 대해 배웠습니다.

Jest에서 범위를 정의하는 방법



Jest에서 범위를 정의하기 위해 describe 함수를 사용하여 모든 테스트를 래핑할 수 있습니다.

describe('user related actions', () => {
  test('Create new user', () => {
    expect(createUser('Chris', 'p4sSw0rD')).toBe(true);
  });

  test('Update user', () => {
    expect(updateUser(1, 'Chris new name')).toBe(true);
  });
});


이제 이 두 테스트는 이 범위 내에서 실행되며 구성하기 좋은 것 외에도 이 범위의 몇 가지 추가 이점을 얻습니다.

예를 들어 이 범위는 자체 반복 작업을 가져올 수 있습니다. 이러한 정의된 작업은 이 범위에 대해서만 실행됩니다.
그러나 전역 범위 정의 작업도 실행됩니다!

예를 들어 공용 데이터베이스가 있지만 한 섹션에 대해 취미 데이터베이스도 적용하려고 한다고 가정해 보겠습니다.

beforeAll(() => {
  return createDatabase();
});

beforeEach(() => {
  return populateUsers();
});

afterEach(() => {
  return clearUsers();
});

afterAll(() => {
  return removeDatabase();
});

test('Add a new user', () => {
  expect(addUser('Chris')).toBe(true);
});

describe('hobby related tasks', () => {
  beforeEach(() => {
    return populateHobbies();
  });

  beforeEach(() => {
    return clearHobbies();
  });

  test('Add a new hobby', () => {
    expect(addHobby(1, 'Photography')).toBe(true);
  });
});


이 코드를 실행하고 무슨 일이 일어나는지 보기 위해 무엇이 호출되는지 봅시다.
  • 역시
  • 각(전역 범위)
  • 사용자 테스트
  • 각(전역 범위)
  • 각(전역 범위)
  • 전각(하비 스코프)
  • 취미 테스트
  • 애프터(하비 스코프)
  • 각(전역 범위)
  • 결국

  • 보시다시피 처형의 완전한 수수께끼이지만 before eachafter each 화재 명령을 살펴보는 것이 중요합니다.

    범위를 사용하여 사용할 수 있는 변수를 정의하고 덮어쓸 수도 있습니다.

    예를 들어 테스트 사례를 작성하려는 다른 로그인 사용자가 있을 수 있습니다.

    describe('user related tasks', () => {
      const loggedUser = 1;
      test('Add a new user', () => {
        console.log(`adding new user: ${loggedUser}`);
      });
    });
    
    describe('hobby related tasks', () => {
      const loggedUser = 2;
      test('Add a new hobby', () => {
        console.log(`adding new hobby for: ${loggedUser}`);
      });
    });
    


    보시다시피 loggedUser를 두 번 정의하고 이 시퀀스의 출력은 거의 예상한 것과 같습니다.
  • 새 사용자 추가: 1
  • 새 취미 추가: 2

  • 이것이 범위가 지정된 테스트 블록 정의에 대한 훌륭한 첫 번째 소개가 되기를 바랍니다.

    읽어주셔서 감사합니다. 연결합시다!



    제 블로그를 읽어주셔서 감사합니다. 내 이메일 뉴스레터를 구독하고 Facebook에 연결하거나

    좋은 웹페이지 즐겨찾기