java如何模拟RestTemplateBuilder
我正试着测试我的春季服务,但我被卡住了。 我有以下测试课程:
public class ServiceTests {
@InjectMocks
private StateService service;
@Mock
private RestTemplate restTemplate;
@Mock
private ServiceProperties serviceProperties;
@Mock
private RestTemplateBuilder restTemplateBuilder;
@Mock
private RestTemplateResponseErrorHandler restTemplateResponseErrorHandler;
@BeforeEach
void setUp() {
MockitoAnnotations.openMocks(this);
}
@Test
public void testGetMasterDataView() throws IOException {
when(restTemplateBuilder.errorHandler(restTemplateResponseErrorHandler))
.thenReturn(restTemplateBuilder);
when(restTemplateBuilder.build()).thenReturn(restTemplate);
when(serviceProperties.getActuatorHealthServiceUrl())
.thenReturn("someUrl");
when(restTemplate.getForObject(anyString(), any(Class.class)))
.thenReturn("someString");
StateReport state = service.getState();
...
...
...
}
}
我还有下面一节课要考
@Service
public class Service {
private final ServiceProperties serviceProperties;
private final RestTemplateBuilder restTemplateBuilder;
private RestTemplate restTemplate;
public Service(ServiceProperties serviceProperties, RestTemplate restTemplate,
RestTemplateBuilder restTemplateBuilder) {
this.serviceProperties = serviceProperties;
this.restTemplateBuilder = restTemplateBuilder;
this.restTemplate = restTemplate;
}
@SuppressWarnings("unchecked")
public StateReport getState() {
//NullPointerException is on the next line
restTemplate = restTemplateBuilder
.errorHandler(new RestTemplateResponseErrorHandler())
.build();
...
...
...
}
}
我在RestTemplateBuilder对象上得到了NullPointerException,那么我应该如何正确地进行模拟呢? 如果没有errorHandler方法,它可以很好地工作,但我需要它来进行自定义错误处理
共 (0) 个答案