如何在then Return中处理方法的不同返回类型?

时间:2019-03-27 11:40:25

标签: unit-testing junit mockito powermock

我有一个返回ResponseEntity<?>的方法。我想在Mockito.when().thenReturn();中处理该退货 我收到以下错误。

the method thenreturn(responseentity<capture#6-of ?>) in the type ongoingstubbing<responseentity<capture#6-of ?>> is not applicable for the arguments (responseentity<capture#7-of ?>)

这是我的代码:

@Mock
EmisionesApi emisionesApi;

@InjectMocks
EmisionesControllerImpl emisionesControllerImpl = new EmisionesControllerImpl();

@BeforeClass
public static void setUp() {

}

@Test
public void testBuscarModalidades() throws Exception {
    try {
        final String compania = "11";
        final String producto = "10";
        ObjectMapper mapper = new ObjectMapper();

        List<ProductoComercial> productoComercials = new ArrayList<ProductoComercial>();
        ProductoComercial pc = new ProductoComercial();
        productoComercials.add(pc);
        ResponseEntity<List<ProductoComercial>> salida = new ResponseEntity<List<ProductoComercial>>(productoComercials, HttpStatus.OK);

        ProductosComercialesDto productosComercialesDto = new ProductosComercialesDto();
        String jsonBody = mapper.writeValueAsString(productosComercialesDto);

        String urlBackend = PowerMockito.mock(String.class);
        Whitebox.setInternalState(emisionesControllerImpl, "urlBackend", urlBackend);
        ResponseEntity<String> response = new ResponseEntity<String>(jsonBody, HttpStatus.OK);

        RestTemplateSSO rt = PowerMockito.mock(RestTemplateSSO.class);
        Mockito.doNothing().when(rt).setErrorHandler(Mockito.any(ResponseErrorHandler.class));
        Whitebox.setInternalState(emisionesControllerImpl, "rt", rt);
        Mockito.when(rt.exchange(Matchers.anyString(), Matchers.any(HttpMethod.class), Matchers.<HttpEntity<?>> any(), Matchers.<Class<String>> any())).thenReturn(response);

        Mockito.doReturn(salida).when(emisionesApi).getModalidades(Mockito.anyString(), Mockito.anyString());
        Mockito.when(emisionesApi.getModalidades(Mockito.anyString(), Mockito.anyString())).thenReturn(salida);

        ResponseEntity<List<ProductoComercial>> sal = (ResponseEntity<List<ProductoComercial>>) emisionesControllerImpl.getModalidades(compania, producto);
        Assert.assertTrue(sal.getBody().size() == 1);
        Assert.assertTrue(sal.getStatusCode() == salida.getStatusCode());
    } catch (Exception e) {
        e.printStackTrace();
    }
}

我要测试的方法是:

public ResponseEntity<?> getModalidades 根据statusCode,每次返回的结果都与此方法不同。

我尝试使用doReturn,但被忽略了。我不知道为什么。

0 个答案:

没有答案