CQRS 찾아보고 공부하다보니까 주말을 다 써버렸지만 현재 내가 하고 있는게 맞는지에 대한 정보를 얻지 못 했다. 사내에서 아는 분들에게 여쭤본 결과 DDD를 제대로 해본 사람을 찾지 못 했다.
Command에서 Command를 요청 해도 되는걸까 🤔
@RestController와 @Bean @Component등을 사용해 봤으니 기본적인 골격은 만들 줄 알게 됐는데 이번에는 테스트 코드를 작성해보자.
요건 Jest와 동일하다. Jest에서는 function으로 부르지만 스프링부트에서는 어노테이션으로 부른다. 비슷비슷하다!
요건 it과 동일하다. NodeJS도 test를 사용하던 시절이 있었지 고럼고럼
테스트코드를 뜻하는 어노테이션인데 옵션이 여러가지가 있다
MOCK 기본값으로 ApplicationContext를 로딩하고 내장서버대신 mock환경을 사용.
NONE 내장서버를 사용하지 않고 웹 환경을 사용하지 않는 ApplicationContext를 사용
DEFINED_PORT application.properties / appliaction.yma?l에 정의된 포트 사용
RANDOM_PORT 내장 서버를 사용하되, 포트를 랜덤으로 사용
테스트 코드중WebTestClient를 사용하기 위해 추가
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.)
@AutoConfigureWebTestClient
class CoffeeControllerTest {
@BeforeEach
fun setUp() {
}
@AfterEach
fun tearDown() {
}
@Test
fun getCoffeeList(@Autowired client: WebTestClient) {
assert(
client.get()
.uri("/coffee")
.exchange()
.expectStatus().isOk()
.expectBody(RestResponseDto::class.java)
.returnResult()
.responseBody?.toString()?.isNotEmpty() ?: false
)
}
}
아주아주 너무나도 가벼운 테스트코드 아닌 테스트코드를 추가해보았다. 너무 NodeJS에 빠져있던지라 falsy한 값을 어떻게 체크해야하나 심히 고민했다 😅 응답에서 문자열 값이 뭐라도 있는지만 체크하는 식으로 했다.
스프링의 테스트코드도 NodeJS랑 별 차이가 없다.