Component
public class MyService {
private final ObjectMapper objectMapper = new ObjectMapper();
private final RestTemplate restTemplate = new RestTemplate();
public void myMethod(){
------- codes to test above it------
HttpEntity<String> httpEntity = new HttpEntity<>(objectMapper
.writeValueAsString(message), httpHeaders);
String response = restTemplate
.postForObject(getUrl(), httpEntity, String.class);
}
}
我试过@spy,但没用
@InjectMocks
private MyService myService;
@Spy
private RestTemplate restTemplate;
when(restTemplate.postForObject(
getUrl(),
httpEntity,
String.class
)).thenReturn(getResponse());
2条答案
按热度按时间chhkpiq41#
如果你想监视:
这样,就得到了restemplate的示例。
我个人更喜欢接收restemplate作为一个依赖项,这使得它很容易被模仿。
例如:
在你的测试中
xghobddn2#
springboot测试提供了一种通过mockbean和spybean注解模拟bean的好方法。
尝试使用
@SpyBean
而不是@Spy
以及@MockBean
而不是@Mock
.在这种情况下没有
@InjectMocks
必修的。