강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

kyh_0625님의 프로필 이미지
kyh_0625

작성한 질문수

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

통합 테스트 해보기

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

작성

·

375

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를 작성하라고 하신 말씀에 이 부분은 통합테스트로 코드를 짤 수 있나 의문이 들어서요!

감사합니다

 

답변 2

1

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

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

kyh_0625님의 프로필 이미지
kyh_0625
질문자

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

 

0

kyh_0625님의 프로필 이미지
kyh_0625
질문자

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

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

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

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

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

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

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

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

kyh_0625님의 프로필 이미지
kyh_0625

작성한 질문수

질문하기