Spring WebTestClient 사용 시 항상 로그 찍기(like. alwaysDo)

viiviii·2023년 4월 11일
0
post-thumbnail

🚨 주의

  • 이 방법이 베스트 프랙티스인지는 모릅니다(?)

MockMvc에는 alwaysDo(print())가 있어서 편하고
RestAssured에는 하다 못해 given, then절에 log().all()이 있는데

WebTestClient에는 이런 명시적인 메서드를 찾기 힘들었음

어떻게

👉 entityExchangeResultConsumer를 쓰자

예시

WebTestClient

  • Server를 사용하는 경우
WebTestClient.bindToServer()
        .entityExchangeResultConsumer(System.out::println) // 👈
        .baseUrl(...)
        .build();
  • 그 외
WebTestClient.bindToApplicationContext(context)
        .configureClient()
        .entityExchangeResultConsumer(System.out::println)  // 👈
        .build();

MockMvcWebTestClient

  • WebTestClient과 동일하다
MockMvcWebTestClient
        .bindToApplicationContext(context)
        .configureClient()
        .entityExchangeResultConsumer(System.out::println)  // 👈
        .build();
  • MockMvc과 같은 로그를 원하는 경우
MockMvcWebTestClient
        .bindTo(MockMvcBuilders.webAppContextSetup(context)
                .alwaysDo(print()) // 👈
                .build())
        .build();


출처

도입부에서 이 방법이 최선인지 확답하지 못한 이유는...
뜬금 없게도 Spring Rest Docs에서 alwaysDo로 검색한 뒤 같은 일을 하는 메서드를 찾은 것이기 때문이다ㅠ

0개의 댓글