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

izkcnapc  于 2021-07-15  发布在  Java
关注(0)|答案(1)|浏览(440)

我试图模拟来自rest模板的exchange调用,但是由于某些原因,我从调用中得到的是空响应,而不是我在测试中指定的响应实体。注意-在我的服务接口上添加injectmock之前,rest模板试图进行实际调用,而我在其中添加了一个mock调用,但结果为空。

@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);
4uqofj5v

4uqofj5v1#

如果你使用汉克雷斯特匹配我会推荐使用 is 以及 isA 方法来匹配值或示例,本文详细介绍了核心匹配器

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

相关问题