백엔드/spring
spring "Argument are different!" 해결
DuckCow
2023. 2. 9. 15:37
수업을 들으며, 해당 메소드를 구현한 후 테스트를 실행했더니
엥 위와 같은에러가 나왔다.
내가 이해한 바로는
@WithUserDetails(value = "unoTest", setupBefore = TestExecutionEvent.TEST_EXECUTION)
을 통해 미리 setup 해둔 "unoTest" 관련 User 정보가
ArticleControllerTest class에서 @import(TestSecurityConfig.class)를 하고, 해당 TestSecurityConfig.class에서
구현한
@BeforeTestMethod
public void securitySetUp(){ given(userAccountRepository.findById(anyString())).willReturn(Optional.of(UserAccount.of( "unoTest",
"pw",
"uno-test@gmail.com",
"uno-test",
"test memo" )));}
를 통해 해당 User 정보가 전달되는 것으로 이해했다.
그런데, ArticleController 의deleteArticle 메소드에선
두번 째 파라미터로 boardPrincipal.getUsername()을 전달하고 있고, 이로 인해 오류 내용인 actual에 Username이 들어가는 것으로 확인됐다.
그런데, Username이 아닌 password 가 반환되는 것을 보고 이상해서 ArticleController class을 확인해보니
getUsername()과 getPassword()에 반환값이 서로 바뀌어 있었다..
값을 적절히 바꾼 후 실행한 결과 이상없이 잘 동작했다!!
결국 에러를 해결하는 과정에서 어떤 로직으로 코드가 실행되는 지 차근차근히 돌아가다 보면 더 쉽게 해결할 수 있는 것 같다.
비록 수업을 따라가더라도 작성한 코드의 논리적 흐름을 잃지 말고 이해하면서 공부해나가는 것이 필수다.