어찌 저찌 성공은 한듯.......해서...
기념으로다 블로그에 포스팅....ㅎ
package kr.pe.fountain.web.index;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.reactive.WebFluxTest;
import org.springframework.http.MediaType;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.reactive.server.WebTestClient;
import org.springframework.test.web.reactive.server.WebTestClient.BodySpec;
@RunWith(SpringRunner.class)
@ContextConfiguration(classes = {IndexRouter.class, IndexHandler.class, IndexService.class})
@WebFluxTest
public class IndexTest {
// private static final Logger logger = LoggerFactory.getLogger(IndexTest.class);
@Autowired
private WebTestClient webClient;
@Test
public void testWithParameter() {
BodySpec<String, ?> bodyStr = webClient.get().uri("/{name}", "KS").accept(MediaType.TEXT_HTML)
.exchange()
.expectStatus().isOk()
.expectBody(String.class);
assertTrue(bodyStr.returnResult().getResponseBody().contains("KS"));
}
@Test
public void testWithoutParameter() {
BodySpec<String, ?> bodyStr = webClient.get().uri("/").accept(MediaType.TEXT_HTML)
.exchange()
.expectStatus().isOk()
.expectBody(String.class);
assertTrue(bodyStr.returnResult().getResponseBody().contains("World"));
}
}
package kr.pe.fountain.web.index;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.reactive.function.server.RequestPredicates;
import org.springframework.web.reactive.function.server.RouterFunction;
import org.springframework.web.reactive.function.server.RouterFunctions;
import org.springframework.web.reactive.function.server.ServerResponse;
@Configuration
public class IndexRouter {
@Bean
public RouterFunction<ServerResponse> route(IndexHandler indexHandler) {
return RouterFunctions.route(RequestPredicates.GET("/"), indexHandler::hello)
.andRoute(RequestPredicates.GET("/{name}"), indexHandler::hello);
}
}
package kr.pe.fountain.web.index;
import java.util.HashMap;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Component;
import org.springframework.web.reactive.function.server.ServerRequest;
import org.springframework.web.reactive.function.server.ServerResponse;
import reactor.core.publisher.Mono;
@Component
public class IndexHandler {
// private static final Logger logger = LoggerFactory.getLogger(IndexHandler.class);
@Autowired IndexService indexService;
Mono<ServerResponse> hello(ServerRequest request) {
String retMsg = request.pathVariables().containsKey("name")==false?null:request.pathVariable("name");
String response = indexService.hello(retMsg);
Map<String, Object> renderAttributes = new HashMap<>();
renderAttributes.put("name", response);
return ServerResponse.ok().contentType(MediaType.TEXT_HTML).render("index", renderAttributes);
}
}
package kr.pe.fountain.web.index;
import org.springframework.stereotype.Component;
@Component
public class IndexService {
// private static final Logger logger = LoggerFactory.getLogger(IndexService.class);
public String hello(String paramStr) {
String returnStr;
if( paramStr==null ) returnStr = "World!";
else returnStr = paramStr;
return "Hello, " + returnStr;
}
}
728x90
'Spring Boot' 카테고리의 다른 글
spring boot에서 jpa와 h2디비 세팅 (0) | 2022.12.08 |
---|---|
[펌] spring boot msa (0) | 2021.10.20 |
spring boot에서 mybatis 테스트하기 (0) | 2019.04.19 |
spring boot webflux, 테스트 하기~ (0) | 2019.02.20 |