Как смоделировать массив класса с помощью Mockito - PullRequest
0 голосов
/ 05 июля 2018

Я хочу издеваться над массивом Order. ниже mockMapper читает Order []. class и должен вернуть Order []. class.

Класс обслуживания

public class OrdersConnectorImpl {
    public Order getOrderById(String Id, OrderType orderType) throws Exception {

        Response response = null;
        response = orderServiceTarget.queryParam("ID", Id).queryParam(ORDER_TYPE, orderType).request().accept(MediaType.APPLICATION_JSON)
                .get();
        final StatusType responseStatus = response.getStatusInfo();
        final String serverResponseStr = response.readEntity(String.class);
        if (responseStatus.equals(Response.Status.OK)) {
            objectMapper = getObjectMapper(); // we have a private method in this class
            Order[]  orders = objectMapper.readValue(serverResponseStr, Order[].class);
            if(orders.length>0) {
                return orders[0];
            }
        }
    }
}

Тестовый класс

      public class OrdersConnectorImplTest {

        private ObjectMapper mockMapper;

        private class MockOrdersConnectorImpl extends OrdersConnectorImpl {

            @Override
            protected ObjectMapper getObjectMapper() {
                return mockMapper;
            }
        }


    }
      @Test
public void test_getRenewalOrderForContract() throws Exception {
    Response mockResponse = mock(javax.ws.rs.core.Response.class);
    Order mockOrder = mock(Order.class);
    when(mockResponse.getStatusInfo()).thenReturn(Status.OK);
    when(mockResponse.readEntity(String.class)).thenReturn("{}");
    when(mockBuilder.get()).thenReturn(mockResponse);
    when(mockMapper.readValue("{}", Order[].class)).thenReturn(mockOrder); // this is the problem line
    orderConnector.getOrderById("id", OrderType.NEW);

}
}

Пожалуйста, поправьте меня здесь, как вернуть ожидаемое.

1 Ответ

0 голосов
/ 05 июля 2018

Вы автоматически подключили mockMapper, что означает, что будет введен фактический объект ObjectMapper.

А в части when вы настраиваете поведение mockMapper, чего не должно быть.

Редактировать 1

В вашем случае нет необходимости насмехаться над классом Order, вы должны вернуть массив Order, который вы можете создать в тестах. Для вашей информации, с помощью Junit нет способа, вы можете смоделировать объект, который был создан внутри метода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...