Node.js 심화 - 14
__________________________________________________
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
지금 테스트 순서가
- Get 성공 케이스
- post 성공 케이스
- Post 에러 케이스
- 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
=> 테스트 코드에 어떤 것들이 실행되었고, 각 커버리지가 어떤 것들이다… 그런 것들을 볼 수 있어.
커버리지는 뭘 검사했고 뭘 검사하지 않았는지도 알 수 있어.
커버리지를 모두 다 채우려고 할 필요는 없어. 정말 중요한 코드는 무엇인지, 어떤 것을 검사해야 하는지,
선택과 집중이 중요해.