msdou45 2023. 1. 11. 11:28

__________________________________________________

 

1-32  생성된 데이터를 검증하는 통합 테스트

 

=>  < 3.5 테스트 코드 06 >

3.5 테스트 코드 Goal : 테스트 코드란 무엇인지 이해하고 Jest를 이용해 단위 테스트 코드를 작성할 수 있다.

 

 

폴더 : kimminsoo -> sparta -> node_js -> learning -> third_step -> layered-architecture-pattern -> __test__

-> integration -> posts.integration.spec.js

 

 

지금 테스트 순서가 

 

  1. Get 성공 케이스
  2. post 성공 케이스
  3. Post 에러 케이스
  4. Get 성공 케이스.

 

인데, 1번 케이스에서는 데이터가 없는 상태이니 그냥 data:[] 로 검증했어.

허나 4번 케이스에서는 2번 케이스에서 실재로 데이터를 post 하기 때문에 정말로 GET 이 되는지 확인해 볼 수 있어.

 

 

——

// 실제로 데이터가 생성이 된 상태에서 get 으로 데이터를 조회해서 검증해보자. 왜? post api 를 실행한 다음이니 데이터가 있겠지.

 

  test('GET /api/posts API (getPosts) Integration Test Success Case, is Exist Posts Data', async () => {

    const createPostRequestBodyParams = { // 알아보기 쉽게, 실제로 post 성공 검증할 때 사용했던 req.body

      nickname: "lololo", 

      password: "12344", 

      title: "title 2222", 

      content: "content 2222"

    }

    const response = await supertest(app).get(`/api/posts`);

 

    // 1. API를 호출하였을 때, 성공적으로 실행할 경우 200 Http Status Code를 반환한다.

    expect(response.status).toEqual(200);

    // 2. API의 Response는 1개의 데이터를 생성한 상태이므로 `{ data: [ { postId, nickname, title, createdAt, updatedAt }] }`의 형태를 가진다.

    expect(response.body).toMatchObject({

      data: [

        {

          postId: 1,

          nickname: createPostRequestBodyParams.nickname,

          title: createPostRequestBodyParams.title,

          createdAt: expect.anything(), // 해당 Parameter가 존재하는지 확인. null 혹은 undefined 만 아니면 통과.

          updatedAt: expect.anything(), // 해당 Parameter가 존재하는지 확인.

        }

      ]

    })

  });

——

=> 실행 커멘드

——

npm run test:integration

——

 

 

 

****

npx jest --verbose --coverage

 

=> 테스트 코드에 어떤 것들이 실행되었고, 각 커버리지가 어떤 것들이다… 그런 것들을 볼 수 있어.

커버리지는 뭘 검사했고 뭘 검사하지 않았는지도 알 수 있어.

 

커버리지를 모두 다 채우려고 할 필요는 없어. 정말 중요한 코드는 무엇인지, 어떤 것을 검사해야 하는지,

선택과 집중이 중요해.