2016-03-02 121 views
1

我试图单元测试与RestTemplate发送到API的请求,并从中获取一些资源次年春天启动代码:的Mockito和RestTemplate与泛型类型

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)。

回答

1

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

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

Source - Reference

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