NodeJS에서 Spring 전환하기 6

장달진·2024년 4월 29일

오늘의 잡담

CQRS 찾아보고 공부하다보니까 주말을 다 써버렸지만 현재 내가 하고 있는게 맞는지에 대한 정보를 얻지 못 했다. 사내에서 아는 분들에게 여쭤본 결과 DDD를 제대로 해본 사람을 찾지 못 했다.
Command에서 Command를 요청 해도 되는걸까 🤔

테스트 코드 작성해보기

@RestController@Bean @Component등을 사용해 봤으니 기본적인 골격은 만들 줄 알게 됐는데 이번에는 테스트 코드를 작성해보자.

@BeforeEach @AfterEach @BeforeAll @AfterAll

요건 Jest와 동일하다. Jest에서는 function으로 부르지만 스프링부트에서는 어노테이션으로 부른다. 비슷비슷하다!

@Test

요건 it과 동일하다. NodeJS도 test를 사용하던 시절이 있었지 고럼고럼

@SpringBootTest

테스트코드를 뜻하는 어노테이션인데 옵션이 여러가지가 있다
MOCK 기본값으로 ApplicationContext를 로딩하고 내장서버대신 mock환경을 사용.
NONE 내장서버를 사용하지 않고 웹 환경을 사용하지 않는 ApplicationContext를 사용
DEFINED_PORT application.properties / appliaction.yma?l에 정의된 포트 사용
RANDOM_PORT 내장 서버를 사용하되, 포트를 랜덤으로 사용

@AutoConfigureWebTestClient

테스트 코드중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랑 별 차이가 없다.

profile
아무것도 모르는 개발자

0개의 댓글