
예? 3계층으로 나누라구요??
원래는 3계층만 있는게 아니라 N계층 아키텍처라고 표현하는거 같다.
내가 원하는대로 더 쪼갤 수 있는데 보통 3~4계층으로 나누는거 같다.

요런 느낌인데 글로 표현하자면
1) Control Layer 는 입출력 데이터를 송수신 하는 역할만 넣고
2) Service Layer 에서는 가공되어온 데이터를 로직처리하기 위해서 사용하고
3) Repository Layer 에서는 데이터를 가공하는 역할을 한다.
그럼 나는 제대로 나누기 위해서는 Class 를 만들어줘야한다.
그런데 Class 는 추상화는 되어있는데 실체화가 안되어 있기때문에 객체인스턴스를 만들어줘야한다.
그럴려면 new를 선언해서 변수명을 만들어주고 사용하면된다.
어때요 참 쉽죠잉 ^_^ (사실 어렵다ㅋ)
우선 Class 는 메모리 점유를 하지않기때문에 굉장히 효율적으로 사용할 수 있다고 합니다 크크

그래서 저번주에 만들어놓은 데이터를 토대로 하나씩 옮겼는데 솔직히 오류도 나고 감을 못잡았지만 뭐 엄청 어렵지않게 나눌 수 있었다.
하지만 계층을 나누다보니 객체지향에 대해 아직은 많이 공부해야하는구나라고 느꼈다.... 음 내가 짠 로직이 돌아가기는 하는데 흡사 이런느낌이랄까...?
![]()
그래서 테스트코드라는걸 해야하는데 아니 솔직히 준 강의로는 도저히 짤 수가 없어서 간단하게 짜봤다.
test("댓글 조회가 되는지 !", async() => {
const commentsId = 1;
const comment = "테스트코드용";
const findComment = await commentsRepository.CommentById(commentsId);
expect(comment).toEqual(findComment.comment)
})
test("댓글 조회가 안되면 null 반환!", async() => {
const commentsId = 2;
const comment = "테스트코드";
const findComment = await commentsRepository.CommentById(commentsId);
const res = await request(app).get('/comments/100');
console.log(res.body)
expect(res.body).toBeNull();
expect(res.status).toBe(200)
})
test("댓글 조회테스트", async() => {
const commentsId = 2;
const comment = "테스트코드";
// const findComment = await commentsRepository.CommentById(commentsId);
const res = await request(app).get('/comments/100');
console.log(res.body)
expect(res.body.data).toStrictEqual([]);
expect(res.status).toBe(200)
})
이런식으로
첫번째에는 내 DB에서 실제로 저 데이터를 갖고 있는지
두번째에는 ID 값으로 조회가 안되면 null 로 반환하는지
세번째는 ID 값을 조회해서 [] 로 반환하는지 이고 이것들은 다 성공으로 나왔다.
이 정도가 이번 테스트코드의 내 한계...였다
어쨌든 뭐 조금이나마 테스트코드를 어떻게 짜면 되는지 알 수 있어서 좋은 시간이었고 좀 더 공부해야겠구나 생각이 강하게 들었다요.
자 6주차는 이제 이걸토대로 프론트엔드들과 미니프로젝트 협업이 있다. 설레고 무섭다. 그분들에게 민폐가 되지 않도록 열심히... 홧팅...!