항해 5주차 회고 (3 Layered Architecture)

최예닮·2022년 10월 23일
post-thumbnail

예? 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주차는 이제 이걸토대로 프론트엔드들과 미니프로젝트 협업이 있다. 설레고 무섭다. 그분들에게 민폐가 되지 않도록 열심히... 홧팅...!

profile
산을 오르려고 하는데 이제 주차장에 막 주차한 초보개발자

0개의 댓글