我需要为此方法编写单元测试:
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