Java 使用lambda函数调用RESTAPI的Junit测试用例

Java 使用lambda函数调用RESTAPI的Junit测试用例,java,spring,junit,mockito,spring-webflux,Java,Spring,Junit,Mockito,Spring Webflux,考虑一个内部使用lambda函数的restapi调用方法,我们如何编写junit测试用例。我自己尝试过,但未能模拟uri构建器,该构建器在post api调用中表示为lambda函数。还有如何在flatMap中模拟块。下面给出了我尝试编写单元测试的代码片段 public ResponseEntity<String> findEmployee(String empName, String empId) { response = employeeService.post

考虑一个内部使用lambda函数的restapi调用方法,我们如何编写junit测试用例。我自己尝试过,但未能模拟uri构建器,该构建器在post api调用中表示为lambda函数。还有如何在flatMap中模拟块。下面给出了我尝试编写单元测试的代码片段

public ResponseEntity<String> findEmployee(String empName, String empId) {

        response = employeeService.post.uri(builder -> builder.path(pathMapper.get("GET_PATH")).queryParam(EMP_ID, empId).build())
            .accept(APPLICATION.JSON)
            .syncBody(empName)
            .exchange()
            .flatMap( empResponse -> {
                LOGGER.info(empResponse.getStatusCode());
                return empResponse.toEntity(String.class);
            }).block();

            return response;
    }
public ResponseEntity findeEmployee(字符串empName,字符串empId){
response=employeeService.post.uri(builder->builder.path(pathMapper.get(“get\u path”)).queryParam(EMP\u ID,empId.build())
.accept(APPLICATION.JSON)
.syncBody(empName)
.exchange()
.flatMap(EMP响应->{
LOGGER.info(empResponse.getStatusCode());
返回empResponse.toEntity(String.class);
}).block();
返回响应;
}

其中,employeeService是一个Webclient对象。任何帮助都将不胜感激。

朋友不要让朋友嘲笑流畅的API

lambda内嵌,因此无法单独测试。如果需要,那么必须将其提取到可以测试的方法调用中

.flatMap(this::handleResponse)
.block();
...
字符串句柄响应(响应empResponse){
LOGGER.info(empResponse.getStatusCode());
返回empResponse.toEntity(String.class);
}
更一般地说,您可能想看看这样的东西,它设置了一个本地Web服务器,您可以使用set-test响应作为种子