尝试如下的模拟:
Mockito.doReturn(responseEntity).when(restTemplate.exchange(anyString(), anyObject(), anyObject(), anyObject()));
这给了我一个汇编问题:
"方法exchange(String,HttpMethod,HttpEntity,Class,Object [])对于类型RestTemplate"
是不明确的如此努力:
GetRelationshipInfoResponse relationship = getEntity();
ResponseEntity<GetRelationshipInfoResponse> responseEntity = new ResponseEntity<GetRelationshipInfoResponse>(relationship,
HttpStatus.ACCEPTED);
Mockito.doReturn(responseEntity).when(restTemplate.exchange(anyString(), Matchers.eq(HttpMethod.POST),
Matchers.<HttpEntity<?>> any(), Matchers.<Class<Object>> any()));
我现在在运行时看到MethodInterceptorFilter
。拦截正在获取空对象值。
有人可以建议我如何解决。
答案 0 :(得分:0)
你不应该模仿@RestClientTest
。有一个框架是出于这个原因而设计的:sh
见这里:
答案 1 :(得分:0)
我曾经遇到过这样的错误。我想出了一个更可靠的解决方案。我也提到了对我有用的导入声明。下面的代码完美地模拟了其余模板。
import org.mockito.Matchers;
import static org.mockito.Matchers.any;
import org.springframework.http.HttpHeaders;
import org.springframework.http.ResponseEntity;
这是要模拟的实际模板。
HttpHeaders headers = new Headers();
headers.setExpires(10000L);
ResponseEntity<String> responseEntity = new ResponseEntity<>("dummyString", headers, HttpStatus.OK);
when(restTemplate.exchange( Matchers.anyString(),
Matchers.any(HttpMethod.class),
Matchers.<HttpEntity<?>> any(),
Matchers.<Class<String>> any())).thenReturn(responseEntity);
这里'responseEntity'值不会为空,我们可以使用它来完美地声明一条语句。