@ExtendWith 확장 기능을 구현한 클래스를 실제로 테스트에 사용하는 방법 중 하나입니다. SpringTest Context 프레임워크와 Junit5를 통합해 사용할 때는 SpringExtension.class와 함께 사용합니다. Mockito와 Junit5를 통합해 사용할 때는 MockitoExtension.class와 함께 사용합니다. @ExtendWith(RestDocumentationExtension.class) public class RestDocsTestSupport extends ControllerTest { @Autowired protected RestDocumentationResultHandler restDocs; ... } 저는 REST Docs 설정을 공통적으로 사용하기 위해 확..
분류 전체보기
@Valid Valid 어노테이션은 자바 표준 스펙입니다. Controller 계층에서 dto의 유효성을 검사할 때 사용합니다. @PostMapping public ApiResult createGroup(@CurrentUser User user, @Valid @RequestBody CreateGroupRequest createGroupRequest) { return ApiUtils.success(groupService.createGroup(user, createGroupRequest)); } 검증할 dto 앞에 사용함으로써 내부 로직을 수행하기 전에 dto를 검사합니다. public class CreateGroupRequest { @Size(min = 2, max = 20, message = "그룹명은 ..
@Mock란 단위테스트 시, 모의 클래스를 만들 때 사용합니다. 서비스나 컨트롤러 단위 테스트를 할때 여러 제한적인 상황이 있습니다. 레포지토리와 의존성을 어떻게 해결할지, DB연동을 하지 않고 어떻게 분리해서 테스트를 할지 고민을 하게 됩니다. 이럴 때 편리함을 주는 어노테이션이 @Mock입니다. @Test @DisplayName("가장 많이 저장된 맛집 조회") public void get_fav_rests_ranking_most_save() throws Exception { RestRepository restRepository = Mockito.mock(RestRepository.class); RankingRestaurantService rankingRestaurantService = new Ran..
Hash Hash 는 단방향으로 암호화를 하는 기법입니다. 유저가 password 를 1234로 입력하고, DB에 password가 그대로 저장이 된다면, 해커가 DB에 접근하게 됐을때 모든 유저의 password 는 그대로 노출될 것입니다. 해시는 이처럼 원본 데이터를 암호화하기 위해 사용합니다. 단방향인 이유는 원본 데이터를 해싱해서 다이제스트(해시에 의해 암호화된 데이터)로 만들 수는 있지만, 다이제스트를 원본으로 복호화할 수는 없어야 하기 때문입니다. ex) 1234 -> Hash -> 5b086ac2 (o) ex) 1234