작성
·
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
0
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과 연결하고요.
예 로그인 실패하는 통합테스트를 하고 싶습니다!