繁体   English   中英

模拟 rest 模板交换方法返回 null

[英]Mocked rest template exchange method returning null

我正在尝试模拟来自 rest 模板的交换呼叫,但由于某种原因,我从呼叫而不是我在测试中指定的响应实体得到 null 响应。 注意 - 在我的服务接口上添加 injectMocks 之前,rest 模板试图进行实际调用,当我添加它时,它会进行模拟调用,但结果是 null。

@ActiveProfiles("unit-test")
@RunWith(SpringJUnit4ClassRunner.class)
@Category({ UnitTests.class })
@SpringBootTest@Import({PropertiesTestConfiguration.class})
public class MyTest {

    @Mock
    OAuth2RestTemplate serviceRestTemplate;

    @Autowired
    @InjectMocks
    ServiceInterface serviceInterface;
    
    @Test
    public void getServiceResponse_Success() {

        ResponseEntity<String> mockResponseEntity = new ResponseEntity<String>(mockResponseBody, HttpStatus.OK);

        String url = "https://unit_test_/XXX";
        UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url);

        Mockito.when(serviceRestTemplate.exchange(    Matchers.anyObject(),     Matchers.any(HttpMethod.class),    Matchers.<HttpEntity> any(),     Matchers.<Class<String>> any()) ).thenReturn(mockResponseEntity);

        ServiceInterface.getClaimByClaimId(XXX);
    }

}

在我正在测试的方法中,这将返回 null

responseEntity = serviceRestTemplate.exchange(uriBuilder.toUriString(),
        method, requestEntity, String.class);

如果您使用的是hamcrest匹配器,我建议使用isisA方法来匹配值或实例,这篇文章解释了有关核心匹配器的更多信息

 Mockito.when(serviceRestTemplate.exchange(is(instanceOf(String.class)),     
                       is(HttpMethod.GET),    
                       is(HttpEntity.class),  
                       isA(String.class)))
                      .thenReturn(mockResponseEntity);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM