如何模拟HTTPSClient发布服务

时间:2019-03-01 18:45:02

标签: http post mocking mockito powermockito

我想模拟以下代码行:

ResponseEntity<String> response = client.callPostService(url, dto, new ParameterizedTypeReference<String>(){});

尝试

@Test
public void testFunction{
    HTTPSClient client = Mockito.mock(HTTPSClient.class);
    Mockito.when(client.callPostService(any(String.class),any(Dto.class), new ParameterizedTypeReference<String>{}))
}

我在放置的参数方面遇到错误。

1 个答案:

答案 0 :(得分:1)

在配置模拟行为时,不应混用Mockito的参数匹配器(如any(),eq()等)和真实对象。

因此,在您的情况下,下一个是正确的:

Mockito.when(client.callPostService(any(String.class),any(Dto.class), Mockito.any(ParameterizedTypeReference.class))).thenReturn(...)

或(自Java 8起):

Mockito.when(client.callPostService(any(String.class),any(Dto.class), Mockito.any())).thenReturn(...)

由于增强的类型推断,后者也不会引发有关未经检查的泛型转换的编译器警告。