0

我需要为此方法编写单元测试:

import org.springframework.web.reactive.function.client.WebClient;
import reactor.core.publisher.Flux;
 
 @Service
public class ConsumeDataServiceImpl implements ConsumeDataService {
public void consumeServerSentEvent(String baseUrl) {
        WebClient client = WebClient.create(baseUrl);
        ParameterizedTypeReference<ServerSentEvent<String>> type
                = new ParameterizedTypeReference<ServerSentEvent<String>>() {};

        Flux<ServerSentEvent<String>> eventStream = client.get()
                .uri("/")
                .retrieve()
                .bodyToFlux(type);

        eventStream.subscribe(
                content -> System.out.println("***received***"),
                error -> System.out.println("***error*** " + error),
                () -> System.out.println("***completed***"));
    }
}

我的单元测试是这样的:

 @Test
    public void testConsumeServerSentEvent()  {
        MockWebServer mockBackEnd = new MockWebServer();
        try {
            mockBackEnd.start();
        } catch (IOException e) {
            System.out.println("error in start mockbackend");
        }
        mockBackEnd.enqueue(
                new MockResponse()
                        .setResponseCode(200)
                        //.setHeader("Accept", "text/event-stream")
                        .setBody(Flux.just("Spring MVC","Spring Boot","Spring Web").toString())
        );
        Environment env = Mockito.mock(Environment.class);
        MyRepository repo = Mockito.mock(MyRepository.class);
        ConsumeDataServiceImpl consumeService = new ConsumeDataServiceImpl(env,repo);
        consumeService.consumeServerSentEvent(mockBackEnd.url("/").toString());
    }

但是当我在 eventStream.subscribe 中运行单元测试时,我收到错误:Java.lang.IllegalStateException: executor not accepting a task

4

0 回答 0