java - 具有泛型类型的 Mockito 和 RestTemplate

标签 java unit-testing spring-boot mockito

我正在尝试使用 RestTemplate 向 API 发送请求并从中检索一些资源来对以下 Spring 启动代码进行单元测试:

final URI targetUri = UriComponentsBuilder.fromUriString(baseUri)
                .path("/myEntities").build().toUri();

final RequestEntity<Void> request = RequestEntity.get(targetUri).accept(HAL_JSON).build();
final Resources<MyEntity> resourceAccounts = restTemplate.exchange(request, new ResourcesType<MyEntity>() {
        }).getBody();

在单元测试中,我使用 Mockito 模拟此请求响应:

final Resources<MyEntity> myEntities = new Resources<>(myEntityList, links);
final ResponseEntity<Object> response = new ResponseEntity<Object>(myEntities, HttpStatus.OK);

when(restTemplate.exchange(any(RequestEntity.class), any(ResourcesType.class))).thenReturn(response);

它工作正常,但我得到 Unchecked invocation exchanged因为我没有正确使用泛型。

我只是想知道这样做的正确且万无一失的方法是什么?我尝试类型转换 ResponseEntity输入 MyEntity但这确实会导致编译异常(构造函数 ResponseEntity<MyEntity> is undefined )。

最佳答案

使用类型安全方法 Matchers ?使用泛型检查方法调用的方法之一。

Matchers.<ResponseType<MyEntity>>.any()

Source -Reference

要检查方法的响应,ArgumentCaptor可以使用。

关于java - 具有泛型类型的 Mockito 和 RestTemplate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35743648/

相关文章:

java - ReSTLet 错误。无法运行以下服务器端任务 httpserver.serverimpl

Java XML 读取

javascript - “nodeunit”不被识别为内部或外部命令,

Spring REST Controller 不处理 gzip 压缩输入

java - 使用嵌套 TestConfiguration 覆盖 Spring Boot 2.1 切片测试中的 bean

spring - Junit测试Spring服务和DAO层

vb.net - 如何在 VB .NET 中对单独项目中的私有(private)函数进行单元测试?

spring boot rest外部tomcat 401错误

java - 使用重试模板执行自定义重试策略

java - 是否可以自定义 JTree 节点?