Study Event Test 하는 법 문의드립니다.
339
작성한 질문수 20
안녕하세요. 백기선 강사님 강의 참고하여 직접 코드 짜면서 공부하는 도 중 막히는 부분이 생겨 질문 남기게 되었습니다.
Study관련한 Event에 대해서 테스트를 해보려고 하는데요.
@Transactional
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.MOCK)
@AutoConfigureMockMvc
public class StudyNotificationTest {
@Autowired MockMvc mockMvc;
@Autowired ApplicationEventPublisher applicationEventPulbisher;
@Autowired NotificationService notificationService;
@Autowired NotificationRepository notificationRepository;
@Autowired AccountService accountService;
@Autowired AccountRepository accountRepository;
@Autowired StudyService studyService;
@Autowired StudyRepository studyRepository;
@Autowired ZoneService zoneService;
@Autowired TagService tagService;
@Autowired TagRepository tagRepository;
@Autowired ThreadPoolTaskExecutor executor;
@BeforeEach
public void boforeEach() {
SignUpForm signUpForm = SignUpForm.builder()
.email("test@test.com")
.nickname("test")
.password("12341234")
.build();
Account account = accountService.signUp(signUpForm);
account.setStudyCreatedByEmail(true);
account.setStudyCreatedByWeb(true);
account.setStudyUpdatedByEmail(true);
account.setStudyUpdatedByWeb(true);
TagForm tagForm = TagForm.builder().title("test").build();
Zone zone = zoneService.findAll().get(0);
Tag tag = tagService.save(tagForm);
accountService.addTag(account, tag);
accountService.addZone(account, zone);
StudyForm studyForm = StudyForm.builder()
.fullDescription("test")
.path("test")
.shortDescription("test")
.title("test").build();
Study study = studyService.save(studyForm, account);
studyService.addTag(study, tag);
studyService.addZone(study, zone);
}
@AfterEach
public void afterEach() {
accountRepository.deleteAll();
studyRepository.deleteAll();
tagRepository.deleteAll();
notificationRepository.deleteAll();
}
@DisplayName("Study Created Event")
@Test
public void studyCreateEventTest() throws Exception {
Study study = studyService.getOnlyStudyByPath("test");
Account account = accountService.findByNickname("test");
applicationEventPulbisher.publishEvent(new StudyCreatedEvent(study));
executor.getThreadPoolExecutor().awaitTermination(1, TimeUnit.SECONDS);
List<Notification> notifications = notificationService.findByNotificationType(NotificationType.STUDY_CREATED);
assertTrue(notifications.stream().map(Notification::getAccount).collect(Collectors.toList()).contains(account));
}
}
위와 같이 코드를 작성했는데, EventListener에서 Study를 조회하는 부분에서 ID에 해당하는 Study가 없다는 오류와 함께 테스트가 진행되지 않았습니다..
(executor 부분은 async 테스트 하는 방법 찾아보던 도중 발견한 코드입니다.)
해당 이벤트를 테스트할 수 있는 방법 문의드립니다.
감사합니다.
답변 1
0
AsyncConfig를 테스트 사용시 비활성화 상태로 만들면 테스트시 비동기 리스너를 사용하지 않을테니 좀 더 테스트가 편해질 수 있습니다. AsyncConfig를 비활성화 시키는 방법은 스프링 프로파일을 사용해 해당 설정이 테스트 프로파일이 아닌 경우에만 사용하도록 설정하고 테스트 코드는 테스트 프로파일로 실행하도록 설정하면 그렇게 만들 수 있습니다.
Study 개설하는 로직에 대해서 궁금점이 있습니다.
0
55
1
앱 재시작 후 회원가입
0
103
1
app.host 관련 질문이 있습니다
0
97
1
강의 버전 정보
0
125
1
event, study 참조
0
219
2
비밀번호 변경 로직 질문있습니다.
0
135
1
프로필 수정 처리 merge 질문입니다.
0
107
1
회원가입 성공 후 redirect이동시 권한 질문
0
492
3
HtmlEmailService 개발하다 생긴 의문입니다
0
250
2
postgreSql 연결하여 JPA 를 통해 테이블 생성시 ZONE 테이블 생성에서 에러가 납니다
0
430
2
수업질문 [긴급] 로그인안되는 문제 말씀해주시는 부분 반영해서 최종 질문드립니다
0
260
2
[긴급-재업로드]수업질문 로그인 안 되는 문제
0
235
1
[긴급] 로그인해도 네비게이션 바가 안 바뀌고 있습니다!! 로그인이 안 됩니다 도와주세요
0
277
1
cropper 오류 문제로 질문드립니다..
0
288
2
authentication관련 질문...
0
495
2
모임참가 취소 할때 로직 질문
0
350
3
안녕하세요 기선님 질문이있습니다..
0
229
1
HTML코드 및 강의 중간자료들
0
679
3
springSecurity
0
522
2
버전 질문입니다.
0
302
1
부트스트랩, css
0
353
2
영속성 컨텍스트 질문
0
248
2
다시 강의를 보니 드는생각..
0
352
2
5:50에 나오는 HTML코드는 어디서 찾을 수 있나여?
0
313
1





