Notice
Recent Posts
Recent Comments
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

Día de Ruru

20230418 TIL 본문

항해99/TIL

20230418 TIL

공대루루 2023. 4. 19. 03:30

문제점

mypage.controller의 testcode를 짜려고 하는데 아무리 봐도 정말 흠잡을 곳 없이 잘 짰는데 계속 아래의 testcode에서 막힌다. mypagecontroller.MypageService.checkUserById가 0번 호출된다고 결과가 나오는게 이상하다.. 그럴리가!!

expect(mypagecontroller.MypageService.checkUserById).toHaveBeenCalledTimes(1);

해결방안

await mypagecontroller.getUserInfo(mockRequest, mockResponse, mockNext)

1. 테스트코드 세션을 진행했던 멘토님의 슬랙 아이디를 알아내서 디엠으로 여쭤봤더니 지금 코드 자체가 실행이 잘되고 있는지 확인을 해봐야 될 것 같다고 하셨다. 내가 작성한 테스트 코드를 보면 위의 코드에 의해 mycontroller.getUserInfo()가 실행될 것이라는 생각이 들어서 직접 비즈니스 코드에 가서 콘솔로그를 찍어보았다.

getUserInfo = async (req, res, next) => {
        try {
           console.log("여기에 들어오니?")
            const { userId } = res.locals.user;
            console.log("그렇다면 여기는..?")
            const user = await this.MypageService.checkUserById({ userId });
            const userInfo = await this.MypageService.getUserInfo({ user });
            res.status(200).json({ user: userInfo });
        } catch (err) {
            next(err);
        }
    };

위와 같이 콘솔을 찍어본 결과 여기에 들어오니? 는 찍히는데그렇다면 여기는..? 은 찍히지 않는다!!! 그럼 const { userId } = res.locals.user 여기가 문제구나!!! 

2. 그렇다면 내가 testcode에서 작성한 mockdata가 잘못된 것이겠지!! 당장 가서 mockResponse와 mockRequest 를 확인해보았더니 아래와 같이 작성되어 있었다.

   let mockRequest = {
        body: {},
    };

    let mockResponse = {
        status: jest.fn(),
        json: jest.fn(),
        locals: {
            userId: "test1",
        },
    };

비즈니스 코드에서 userId를 얻는 곳은 res.locals.user이다. 위의 코드에서는 locals안에 user가 없기 때문에 값을 갖고오지 못하는 것 같다!! 그렇다면 아래와 같이 바꿔줘야겠다

   let mockRequest = {
        body: {},
    };

    let mockResponse = {
        status: jest.fn(),
        json: jest.fn(),
        locals: {
            user: {
                userId: "test1",
            },
        },
    };

위와 같이 작성해주었더니 바로 제대로 작동을 한다!! 이것때문에 진짜 하루를 통으로 날렸는데.... 나는 정말 ... 바보...

알게된 점

코드는 거짓말을 하지 않는다...

'항해99 > TIL' 카테고리의 다른 글

20230502 TIL  (0) 2023.05.03
20230419 TIL  (0) 2023.04.20
20230414 TIL  (0) 2023.04.15
20230413 TIL  (0) 2023.04.13
20230411 TIL  (0) 2023.04.12
Comments