message: WebSocket 테스트
Closed this issue · 0 comments
platanus-kr commented
웹소켓 인수 테스트
시작 전 생각 했던 것
1) 예상
- 일반 REST API는 RestAssured 로 검증하는데 WebSocket같은 stateful 프로토콜은 어떻게 검증하지?
2) 예상과 달랐던 점
- 테스트 환경을 위해서
@Value
로 가져오던 설정을 동적으로 대응할 수 있게 바꿔야 한다.RANDOM_PORT
사용 할 것이기 때문. - 리엑터 여전히 쉽지않네..
3) 정말로 필요했던 것
- 프로파일 분리
- 리엑터 다시 공부하기
- netty 기반 웹소켓 클라이언트
이 티켓에서 실제로 한 것
SimpleMessageWebSocketHandler와 StandaloneMessageWebSocketHandler 인수 테스트 작성
웹소켓의 인수 테스트 작성
ReactorNettyWebSocketClient
를 사용하여 채팅방 구독과 메시지 수발신 검증
세션 유효성 검사 Fake 컨트롤러 작성
- 채팅방 진입시 세션 유효성 검사를 위해 web의
/api/v1/auth/validate
를 호출하는데 test용 Fake 컨트롤러 작성
테스트를 위한 프로파일 정리
정적 프로퍼티를 동적으로 주입할 수 있게 변경
- 기존
@Value
로 값을 가져오는 부분을Environment
빈으로 대체 - 대체된 빈으로 정적 프로퍼티로 가져오던 값을 동적으로 가져오도록 변경
- 스프링 통합 테스트 선언시
@TestPropertySource
로RANDOM_PORT
등록
이후 구현할 내용
- Spring Boot 3.1 업데이트
- 그리고 testcontainers를 도입하여 단독으로 인수테스트 가능하도록 만들기.