【发布时间】:2022-08-17 11:27:13
【问题描述】:
我可以找到几个关于模拟 WebClient 对象的问题。但是在使用正文和具有多个标题值的帖子时,我仍然遇到问题。我只是在使用 Mockito。
public Boolean addNote(AlarmModel model) {
ServiceDTO dto = mapper(model);
return webClient.post()
.uri(\"/service/api/addNotes\")
.headers(getHttpHeaders(dto.getHeader()))
.accept(MediaType.APPLICATION_JSON)
.body(Mono.just(dto.getBody()), ServiceBodyDTO.class)
.retrieve()
.onStatus(HttpStatus::is5xxServerError, this::handleStatusCodeError)
.onStatus(HttpStatus::is4xxClientError, this::handleStatusCodeError)
.bodyToMono(Boolean.class)
.block();
}
这就是我嘲笑 post 方法行为的方式。
when(webClientMock.post()).thenReturn(requestBodyUriMock);
when(requestBodyUriMock.uri(anyString())).thenReturn(requestBodyMock);
when(requestHeadersMock.headers(any())).thenReturn(requestHeadersMock);
when(requestBodyMock.accept(any())).thenReturn(requestBodyMock);
when(requestBodyMock.contentType(any())).thenReturn(requestBodyMock);
when(requestBodyMock.bodyValue(any())).thenReturn(requestHeadersMock);
when(requestHeadersMock.retrieve()).thenReturn(responseMock);
when(responseMock.bodyToMono(Boolean.class))
.thenReturn(Mono.just(true));
但是,当我执行这个测试用例时,它在以下行失败了取回()例外是java.lang.NullPointerException
我在这里错过了什么吗? TIA。
-
是的,我已经检查过了。我需要为此进行集成测试。我正在尝试进行单元测试。
-
单元测试 webclient 的 ROI 非常低,它的 API 不是为此而设计的,你最好只进行集成测试
标签: java mockito spring-webflux