농담 및 반복 작업

4321 단어 testing
Jest가 각 작업 사이에 반복 작업을 수행하도록 하고 싶을 때가 있습니다.

몇 가지 예:
데이터베이스 쿼리, 저장소 지우기, 모의 데이터 지우기 또는 모의 경로 재설정.

우리는 각 테스트에서 이 반복되는 코드를 가지고 귀찮게 하고 싶지 않으며 운 좋게도 Jest가 우리를 위한 솔루션을 가지고 있습니다.

반복 작업



연결할 수 있는 네 가지 기능이 있습니다.
  • beforeEach : 각 테스트 전에 실행됨
  • afterEach : 각 테스트 후 실행
  • beforeAll : 모든 테스트 전에 실행됨
  • afterAll : 모든 테스트 후에 실행됨

  • 예를 스케치해 보겠습니다.
    호출할 데이터베이스 함수가 ​​있으므로 달성하려는 단계는 다음과 같습니다.
  • 데이터베이스 생성
  • 모의 데이터로 채우기
  • 각 테스트에 대해 다시 채우기
  • 데이터베이스 제거

  • 이 시나리오는 네 가지 기능이 모두 연결되는 완벽한 경우입니다.

    가장 먼저 원하는 것은 beforeAll 함수를 사용할 데이터베이스를 만드는 것입니다.

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


    다음 단계는 테스트에서 변경할 수 있는 데모 데이터로 데이터베이스를 채우는 것입니다.

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


    우리의 테스트는 이 데이터베이스의 요소를 변경/제거/생성할 수 있으므로 각 테스트 사이에 데이터베이스를 지우고 싶습니다.

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


    모든 작업이 완료되면 다음 실행이 다시 새로워지도록 데이터베이스를 제거해야 합니다.

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


    이제 이 네 단계가 필요한 시간에 실행됩니다.
    이를 보여주기 위해 이 샘플 테스트 파일을 만들고 각 호출이 언제 사용되는지 살펴보겠습니다.

    test('user database has Chris', () => {
      expect(db.user.hasName('Chris')).toBeTruthy();
    });
    
    test('user database doesnt have Thomas', () => {
      expect(db.user.hasName('Thomas')).not.toBeTruthy();
    });
    


    발사 순서는 다음과 같습니다.
  • beforeAll : 데이터베이스 생성
  • beforeEach : 데이터베이스 채우기
  • 테스트 1 실행: 사용자 Chris 찾기
  • afterEach : 데이터베이스 지우기
  • beforeEach : 데이터베이스 채우기
  • 테스트 2 실행: Thomas를 찾을 수 없음
  • afterEach : 데이터베이스 지우기
  • afterAll : 데이터베이스 제거

  • 그리고 그것이 취할 흐름입니다.

    우리는 신속하게 테스트를 보다 관리하기 쉽게 만들고 각 테스트가 견고하고 신선하도록 특정 방식으로 작업할 수 있습니다.

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



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

    좋은 웹페이지 즐겨찾기