WebFlux Controller层测试

Controller.java

import cn.jdw.silky.retrofit.SilkyWebFluxClient;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Mono;

import java.io.IOException;

@RestController
@RequiredArgsConstructor
public class ConsumeController {
    private final SilkyWebFluxClient silkyWebFluxClient;

    @GetMapping("/producer/sleep/{seconds}")
    Mono<String> sleep(@PathVariable("seconds") int seconds) throws IOException {
        return silkyWebFluxClient.port(seconds);
    }
}

ApplicationTest.java

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.web.reactive.server.WebTestClient;
import org.springframework.web.reactive.function.client.WebClient;

import java.net.URI;
import java.util.stream.IntStream;

/**
 * @author ListJiang
 */
@ActiveProfiles("native")
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class SquareWebServerTest {
    @Autowired
    private WebTestClient webClient;

    @Test
    void contextLoads() {
        IntStream.range(1, 20).parallel().forEach(i -> {
            var result = webClient.get().uri("/producer/sleep/3")
                    .accept(MediaType.APPLICATION_JSON)
                    .exchange()
                    .expectStatus().isOk()
                    .expectBody(String.class).returnResult().getResponseBody();
            System.out.println(result);
        });
    }
}

posted @ 2022-02-17 11:31  临渊不羡渔  阅读(311)  评论(0编辑  收藏  举报