Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

전남대 BE_유보민 5주차 과제 (2단계) #300

Open
wants to merge 43 commits into
base: rbm0524
Choose a base branch
from

Conversation

rbm0524
Copy link

@rbm0524 rbm0524 commented Jul 26, 2024

2단계 구현했습니다!

테스트 코드가 기능 구현보다 더 어려운 것 같습니다... 1단계 피드백 주신 부분 중 먼저 구현되어야한다고 생각한 KakaoOAuthControllerTest를 다시 작성해보려고 했는데

400 Bad Request: "{"error":"invalid_grant","error_description":"authorization code not found for code=unique-success-code","error_code":"KOE320"}"
org.springframework.web.client.HttpClientErrorException$BadRequest: 400 Bad Request: "{"error":"invalid_grant","error_description":"authorization code not found for code=unique-success-code","error_code":"KOE320"}"

이 에러가 아직 발생합니다. 인가 코드 재사용으로 인한 에러가 왜 발생하는 것인지 도저히 모르겠습니다. 어떻게 테스트를 구성해야 Mock을 제대로 활용할 수 있을까요? 제 생각으로는 Mock을 사용하려고 했지만 그 의도와 다르게 실제로 api에 대한 요청이 발생해서 그런 것 같은데 어느 부분이 잘못되었는지 잘 모르겠습니다.

#379 (comment)
3단계 pr입니다. conflict가 발생해서 알림으로 리뷰 요청을 보내지 못했습니다.
2단계가 아직 머지가 되지 않았지만 3단계를 수행했습니다. 과제 제출을 해야하기 때문에 3단계에 대한 PR은 날렸습니다. 피드백 해주신 부분들을 최대한 반영하려고 했지만... 과제에 대한 기능 구현이 늦어지면서 수정도 계속 미뤄진 것 같습니다... 다음주에라도 빨리 반영하도록 노력하겠습니다...

rbm0524 added 30 commits July 23, 2024 23:10
Copy link

@gunom gunom left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

안녕하세요 보민님 테스트 코드가 많이 어려우셨죠? 테스트 시나리오는 정말 잘짜주셨습니다. 그러나 Bean에 대한 이해가 아직 온전치 않아서 문제가 발생한 거 같네요! 해당 문제에 대해 리뷰 달아놓았으니 확인 부탁드립니다~

@@ -32,32 +31,74 @@ public class KakaoOAuthControllerTest {
@MockBean
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

MockBean이란 것은 실제로 Bean 대신 Mock을 주입한다는 뜻입니다. 그러나 KakaoTalkService에서는 RestTemplate을 빈으로 주입받아 사용하고 있지 않죠? 주입받는 거 대신 KakaoTalkService 객체가 싱글톤으로 생성될 때 같이 생성됩니다. 따라서 여기서 MockBean으로 만들어 바인딩한다해도 KakakoTalkService에서 사용하는 RestTemplate은 이 test에서 바인딩한 restTemplate이 아니게 됩니다.

이 문제를 해결하기 위해선 KakaoTalkService의 restTemplate을 @Autowired로 주입받아야 합니다. Configure 클래스를 만들어 RestTemplate을 Bean으로 만들어서 주입해보세요 :)

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

말씀하신대로 수정해보니 KOE320 에러는 더 이상 발생하지 않습니다! 그렇지만 아직 getAccessToken 메서드에서 "org.springframework.http.ResponseEntity.getBody()" because "response" is null
에러가 발생합니다... 해당 에러 수정 후 2단계 다시 올리겠습니다!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants