有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案