inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지

통합 테스트 해보기

서버 실패시, 패스포트 로그인 실패시 통합테스트 방법

410

kyh_0625

작성한 질문수 1

1

exports.login = (req, res, next) => {
  passport.authenticate('local', (authError, user, info) => {
// 1. 서버 실패 부분
    if (authError) {
      console.error(authError);
      return next(authError);
    }
    if (!user) {
      return res.redirect(`/?error=${info.message}`);
    }
    return req.login(user, (loginError) => {
//2. 패스포트 로그인 실패
      if (loginError) {
        console.error(loginError);
        return next(loginError);
      }
      return res.redirect('/');
    });
  })(req, res, next);
};
---------------------
1번과 2번은 통합테스트 코드로 어떻게 테스트 코드를 작성해야 하는지 여쭤봐도 될까요?

1번은 try - catch 로 어떻게 해보려해도 생각이 안나용
2번은 아애 생각이 안납니다 ㅜㅜ

controllers를 자체를 단위테스트를 하는 것이 아니라
분기마다 test를 작성하라고 하신 말씀에 이 부분은 통합테스트로 코드를 짤 수 있나 의문이 들어서요!

감사합니다

 

node.js mysql mongodb express typescript socket.io jwt

답변 2

1

제로초(조현영)

passport.authenticate를 모킹하는 단위테스트가 아니라 로그인을 실패하는 통합테스트를 의미하시는 건가요?

0

kyh_0625

예 로그인 실패하는 통합테스트를 하고 싶습니다!

 

0

kyh_0625

if (loginError) {
   console.error(loginError);
   return next(loginError);
}

이 부분을 패스포트 로그인 실패로 알고 있어가지고요 
이 부분을 분기처리해서 test 통합테스트 시나리오를 작성했는데 

이런 부분은 단위테스트만 되지 통합테스트는 안되는 거지요?

routes/auth.js 에서 최대한 많이 테스트하면 좋다고 말씀하셔가지고 통합테스트에서
1. 서버에러 가정
2. 로그인하려하는데 패스포트 로그인 실패 가정

이 두가지가 더 추가로 생각나더라고요
이 부분은 단위테스트만 되지 통합테스트로
test('서버에러 가정', () => {});
test('패스포트 로그인 실패 가정', () =>{});

이런식으로 못하는 것이죠? 

1

제로초(조현영)

일단 서버 에러 쪽은 새로운 express app을 하나 만들고 localStrategy를 매번 실패하도록 수정한 것을 passport.use로 새로운 app에 연결하면 될 것 같습니다. req.login은 serializeUser를 에러나는 쪽으로 수정해서 새로운 app과 연결하고요.

깃헙 질문

0

82

2

강의 1-1 수업노트의 로드맵 링크가 작동하지 않습니다.

0

76

1

aws - lightsail 이용 관련

0

58

1

4강 http 서버 만들때 ESM방식으로 해도 될까요?

0

81

2

모듈 사용 시 단점이 있나요?

0

81

1

node.js 버전 및 typescript 적용 문의

0

94

2

12.7. 방장기능(강퇴) 질문드립니다.

0

80

2

12.7 socket.js코드 그대로 뱃겨서 했는데, socket.request.session.color가안나오네요

0

69

1

12.7 코드 그대로 뱃겨서 햇는데 스샷같이 오류가뜹니다.

0

75

2

12.7.1스스로 해보기 질문되나요

0

95

3

시퀄라이즈 실습하기 질문드립니다.

0

196

9

<7-5. 시퀄라이즈 사용하기>수업 질문 드립니다.

0

97

2

크롬에서 user id를 인풋에 입력하고 등록하면 404 에러처리 페이지가 뜹니다.

0

113

2

구매 결제관련 질문입니다 !

0

122

1

다수의 supertest 가 실행될 때 force:true로 인한 DB 초기화 문제

0

133

2

node 설치 방법이 전혀다르게 바뀐것 같습니다.

0

152

2

12강 깃허브에 있는 12.7 chat.html 복붙했는데 css오류

0

122

2

무료/프리미엄 동시 소유 시 질문

0

117

1

비주얼 스튜디오 코드로 계속 진행해도 괜찮을까요?

0

135

2

10강 cors에러 localhost:4000으로 접속했을때 에러

1

159

2

webstorm 해결할 수 없는 변수 문제

0

155

2

혹시 몽고DB 쓸거면 MySQL 강의 스킵해도 되나요?

0

149

2

LightSail 실행 중 오류 질문드립니다!

0

204

2

RedisStore 사용법 질문

0

133

2