2 回答
TA贡献1860条经验 获得超8个赞
这是因为在执行 REST 调用时,实例未通过 注入。您需要在组件类中声明 的方法,该方法在应用程序启动期间或换句话说,在组件扫描期间进行扫描。从而可用于 .RestTemplate
Spring IOC
getRestTemplate
restTemplate
autowire
TA贡献2021条经验 获得超8个赞
按照@chrylis建议将配置与控制器分离后,您可以像这样继续操作。
您必须尝试模拟 RequestEntity.post 方法。请注意,它是一个静态方法,其模拟方式与通常的公共实例方法略有不同。为此,您需要使用PowerMockito,因为Mockito不会这样做。
在 pom 中添加依赖项,如下所示:
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4</artifactId>
<version>1.6.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito</artifactId>
<version>1.6.5</version>
<scope>test</scope>
</dependency>
然后用 注释测试类,如下所示:@RunWith@PrepareForTest
@RunWith(PowerMockRunner.class)
@PrepareForTest({RequestEntity.class})
public class TestClass {
}
和模拟 post 方法,如下所示:
PowerMockito.mockStatic(RequestEntity.class); when(RequestEntity.post(any(URI.class))).thenReturn(getRequestEntityResponseBody());
private RequestEntity< CustomerInfo > getRequestEntityResponseBody(){
//code
}
更新
CustomerInfo customerInfo = new CustomerInfo();
HttpHeaders responseHeaders = new HttpHeaders();
responseHeaders.set("MyResponseHeader", "MyValue");
RequestEntity<CustomerInfo> customerInfoRequestEntity = new ResponseEntity<CustomerInfo>(customerInfo, responseHeaders, HttpStatus.OK);
PowerMockito.mockStatic(RequestEntity.class);
when(RequestEntity.post(any(URI.class))).thenReturn(customerInfoRequestEntity);
添加回答
举报