백엔드/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 메소드에선

(https://github.com/djkeh/fastcampus-project-board/pull/52/files#diff-bc9ff91e81305e29ee018b0587e83f2443e562c6c4eb7fa98ee1b21f969f74f5)

두번 째 파라미터로 boardPrincipal.getUsername()을 전달하고 있고, 이로 인해 오류 내용인 actual에 Username이 들어가는 것으로 확인됐다. 

그런데, Username이 아닌 password 가 반환되는 것을 보고 이상해서 ArticleController class을 확인해보니

getUsername()과 getPassword()에 반환값이 서로 바뀌어 있었다..

 

 

값을 적절히 바꾼 후 실행한 결과 이상없이 잘 동작했다!!

 

결국 에러를 해결하는 과정에서 어떤 로직으로 코드가 실행되는 지 차근차근히 돌아가다 보면 더 쉽게 해결할 수 있는 것 같다.

비록 수업을 따라가더라도 작성한 코드의 논리적 흐름을 잃지 말고 이해하면서 공부해나가는 것이 필수다.