안녕하세요. 단위테스트라는 것을 처음 작성해보는데 어떻게 작성해야할지 감이 안잡히네요 ㅠㅠ 일단 꾸역꾸역 작성을 해봤는데 이렇게 하는 게 맞는지 의문입니다. 너무 구체적으로 작성한 것은 아닌 지 고칠 부분이 있다면 피드백 해주시면 정말 감사하겠습니다. 아래 코드는 아이디, 이메일 중복 체크 및 레디스에 저장 된 인증번호를 체크한 후 회원가입을 구현한 코드입니다. @Service @Transactional @RequiredArgsConstructor public class MemberServiceImpl implements MemberService{ private final MemberRepository memberRepository; private final PasswordEncoder passwordEncoder; private final RedisService redisService; @Override public Member signUp(MemberRequest memberRequest) { // 회원가입 조건 검증 verifySignUpCondition(memberRequest); Member member = memberRequest.toEntity(); member.setPassword(passwordEncoder.encode(memberRequest.getPassword())); member.setRole(Role.MEMBER); member.setSns(Sns.NONE); memberRepository.save(member); // 회원가입 성공 시 레디스에서 관련 데이터 삭제 redisService.deleteKey(memberRequest.getEmail()); return member; } private void verifySignUpCondition(MemberRequest memberRequest) { checkLoginIdDuplicate(memberRequest.getLoginId()); checkEmailDuplicate(memberRequest.getEmail()); redisService.verifyAuthNum(memberRequest.getEmail(), memberRequest.getAuthNum()); } private void checkLoginIdDuplicate(String loginId) { Optional<Member> findMember = memberRepository.findByLoginId(loginId); if(findMember.isPresent()) { throw new BusinessException(ErrorCode.LOGIN_ID_DUPLICATE); } } private void checkEmailDuplicate(String email) { Optional<Member> findMember = memberRepository.findByEmail(email); if(findMember.isPresent()) { throw new BusinessException(ErrorCode.EMAIL_DUPLICATE); } } } 아래는 단위 테스트 코드입니다. @ExtendWith(MockitoExtension.class) class MemberServiceImplTest { @Mock private MemberRepository memberRepository; @Mock private PasswordEncoder passwordEncoder; @Mock private RedisService redisService; @InjectMocks private MemberServiceImpl memberService; @BeforeEach void setUp() { reset(memberRepository, passwordEncoder, redisService); } @Test @DisplayName("회원 가입 성공") void signUp_Success() { // given MemberRequest memberRequest = createMemberRequest(); String encodedPassword = "encodedPassword"; given(memberRepository.findByLoginId(memberRequest.getLoginId())).willReturn(Optional.empty()); given(memberRepository.findByEmail(memberRequest.getEmail())).willReturn(Optional.empty()); given(passwordEncoder.encode(memberRequest.getPassword())).willReturn(encodedPassword); willDoNothing().given(redisService).verifyAuthNum(memberRequest.getEmail(), memberRequest.getAuthNum()); willDoNothing().given(redisService).deleteKey(memberRequest.getEmail()); // when Member member = memberService.signUp(memberRequest); // then assertNotNull(member); assertEquals(member.getLoginId(), memberRequest.getLoginId()); assertEquals(member.getEmail(), memberRequest.getEmail()); assertEquals(member.getNickname(), memberRequest.getNickname()); assertEquals(member.getPassword(), encodedPassword); assertEquals(member.getRole(), Role.MEMBER); assertEquals(member.getSns(), Sns.NONE); verify(memberRepository, times(1)).save(any(Member.class)); verify(memberRepository, times(1)).findByLoginId(any()); verify(memberRepository, times(1)).findByEmail(any()); verify(passwordEncoder, times(1)).encode(any()); verify(redisService, times(1)).verifyAuthNum(any(), any()); verify(redisService, times(1)).deleteKey(any()); } }
react-query를 사용 하고 있는 그중 useQuery를 사용 하고 있습니다 네트워크 탭상에서는 한번만 호출 햇는데 console에서는 회색으로 아래와 같이 두번 호출 한것 처럼 나오는데 이건 어떻게 못막을까요?! 조건을 걸어서 확인을 해봤지만 계속 해서 나오더라구여 ㅠㅠ 두번의 호출인지 소켓을 요청 했을때 두번을 요청 하더라구여 ㅜㅜ
가상머신에 Docker 설치하기에서 3:48에 가상머신에 vi /etc/hosts를 이용해 파일 수정을 하는부분에서 명령어를 칠 시 블루스크린이 뜹니다. 이런 경우는 어떻게 해결해야할까요. 오라클 vm virualbox에선 명령어가 잘 되는데 Termius에서 ssh접속 후 명령어 실행 시 블루스크린이 뜹니다.
broker와 A topic config가 각각 log.retention.ms = 1일, retention.ms =1일 인 상황에서 broker config를 1주일로 바꿨습니다. A 토픽 메세지 보관 기간은 여전히 1일인가요 ? 브로커쪽 설정 수정이 global 하게 적용되는게 아닌건가요? 감사합니다. - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
이틀 전까지는 컴퓨터에서 학습 자료를 볼 때 이미지나 텍스트로 된 곳이 잘 보였는데 지금은 다른 네트워크를 연결해도 잘 보이지 않고 있습니다. ㅠㅠ 혹시나 해서 휴대폰으로도 들어갔는데도 똑같은 현상이 생겼습니다. 사이트 문제인지 아닌지 잘 모르겠는데 한번 확인 해주실 수 있나요?
안녕하세요. MS SQL server express 설치 부분에서 문제가 발생해서 질문 드립니다. 기본 인스턴스 또는 명명 인스턴스와 상관없이 다음 사진과 같이 데이터베이스 엔진이 설치가 되지 않습니다. 방화벽이 문제 때문이라고 생각하여 1433 포트를 허용하는 인바운드 규칙도 추가하였으나 여전히 설치에 오류가 발생합니다. 혹시 강의 내용과 다른 SQL Server 2022 버전을 설치해서 발생하는 문제일까요? 어떤 점에서 문제가 발생하는 지 잘 모르겠습니다
Kafka를 사용하는 주된 이유 중 하나는 확실히 데이터 처리의 유연성과 부하 분산에 있습니다. Kafka를 활용함으로써, 많은 양의 이벤트(예: 쿠폰 발행 요청)를 바로 처리하지 않고 큐에 보관했다가, 시스템의 부하가 적은 시기에 또는 자원이 더욱 충분할 때 일괄적으로 처리할 수 있게 됩니다. kafka 관련해서 다른 분 질문에 답글이 위처럼 달린 것을 확인했는데요.. 큐에 보관했다가 일괄적으로 처리를 할 수 있다고 했는데 그럼 컨슈머 listener 에 언제 카프카에 있는 이벤트를 받아서 처리할 것인지에 대한 설정을 할 수 있는 것인가요? 시스템 부하가 적은 시기나 자원이 충분할 때가 언제인지 어떻게 알고 처리를 하는지 궁금합니다.
[실습] 1. Route53에서 도메인 구매 카페24에서 이미 구매하 도메인이 있습니다. routes5를 시작하기를 누르면 도메인생성, 이전이 있는데, 이전이란 cafe24의 제 도메인을 routeS5로 이전하게 되면서 비용이 발생하는걸까요? 이미 타도메인으로 수업을 따라갈수 있는건지 궁금합니다.
강사님 덕분에 너무 좋은 양질의 강의를 잘 듣고 있습니다 ! 여러번 반복해서 강의를 수강하다 보니 처음 들을 땐 안생기던 궁금 증이 생겨 질문 드립니다. 도커의 네트워크 기술이 있는 이유가 궁금합니다. 강의 수강 이전에는 도커에 대한 이해 없이 늘 새로운 소프트웨어(Redis나 DB등등)를 사용할때 구글링을 하여 도커 명령어를 블로그에서 사용법을 가볍게 익힌채 사용을 했습니다. 그 과정에서 늘 -p 옵션을 사용해 포트 포워딩을 했었습니다. 이렇게 1년간 주먹 구구식으로 사용만 했다가 이번 파트인 네트워크 강의를 듣게 되었는데 본질적으로 '네트워크'라는 개념을 어떻게 사용하는거지 ? 라는 생각이 들었습니다. 컨테이너를 구축할 때 마다 -p 옵션을 강제하도록 하면 네트워크라는 개념이 필요가 없지 않나..(?)라는.. 그래서 혹시 이런 네트워크의 개념이 필요한 예시나 이후 더 고도화된 기술스택에 사용되는 내용을 알수 있을까요 ? (혼자 생각해본 결과 컨테이너간 통신을 하면 안되는 상황 ? 에서 해당 네트워크 개념을 사용해야할꺼 같긴한데 굳이 왜 그런 상황이 생기는 지 또한 의문입니다 !!)
중급, 활용편 #1 DevOps : Infrastructure as Code with AWS and 테라폼
안녕하세요. 하루만에 또 질문이 생겼네요.. backend로 s3 bucket을 지정해 .tfstate 파일을 s3에서 관리하다가 destroy 명령어로 리소스를 제거하려고 할 때 다른 리소스는 모두 제거되지만 s3 bucket은 제거되지 않고 에러가 발생했습니다. 아래 이유들로 당연하다면 당연하지만 그래도 의견을 들어보고자 질문을 하게 되었습니다. ( 이번에도 마찬가지로 구글과 chatgpt를 이용해 찾아봤으나 chatgpt는 lifecycle 블록의 prevent_destory 속성을 이용하면 bucket내부의 파일도 삭제하고 bucket도 삭제해주는 것처럼 알려줘놓고 해보니 안되더라구요ㅜ 결제를 해야하나.. ) s3 bucket의 경우 bucket 내에 파일이 존재하면 삭제할 수 없다 삭제해야하는 파일은 .tfstate 파일인데 terraform을 이용해 생성한 리소스의 정보가 담겨있는 파일이라 해당 파일을 삭제하면 terraform이 인지하지 못해 결국 terraform 명령어를 이용해 s3 bucket을 삭제하지 못하게 된다. 즉, 위 2가지 이유로 인해 backend로 설정한 s3 bucket은 terraform destroy 명령어를 이용해 삭제하는 방법은 없고, 그외 다른 리소스만 destroy 명령어로 삭제하고, s3 bucket까지 삭제하려면 aws console에서 수동으로 .tfstate 파일은 삭제한 뒤 s3 bucket을 삭제해야한다는 결론을 내렸습니다. 해당 결론에 대한 선생님의 의견을 들어보고싶습니다. 답변 부탁드립니다. 감사합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. ========================================= 헤매다가 해결했는데 다른 분들께 도움이 될 것같아서 커뮤니티에 남깁니다 ㅎ_ㅎ .gradle 폴더 내 6.8.2 파일 삭제(gradle 충돌 방지) gradle/wrapper/gradle-wrapper-.properties 수정 distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip build.gradle 파일 수정 plugins { id 'java' id 'org.springframework.boot' version '3.2.5' id 'io.spring.dependency-management' version '1.1.4' } group = 'hello' version = '0.0.1-SNAPSHOT' java { sourceCompatibility = '17' } configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' } tasks.named('test') { useJUnitPlatform() } javax -> jakarta 수정 // import javax.annotation.PostConstruct; import jakarta.annotation.PostConstruct;
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 optionMenu 관련 아래 해골 개미 님과 같은 현상이 발생하여 문의 드립니다. 수업영상대로 코드 작성은 하였습니다. main_menu.xml 확인 하여 정상적으로 xml 파일명등 확인 하였습니다. public boolean onCreateOptionsMenu(Menu menu) { MenuInflater menuInflater = getMenuInflater(); menuInflater.inflate(R.menu.main_menu,menu); return true; } onCreateOptionMenu 부분 정상적으로 따라 작성하였습니다. 차이점이 있다면 IDE 버전이 jellyfish 인데 버전영향이 있는것 인지요? 답변 기다릴게요 감사합니다.