Mockito - функция вызывает другую функцию, я должен издеваться над обеими? - PullRequest
0 голосов
/ 03 февраля 2020

У меня есть код с двумя методами. Метод A вызывает метод B. Должен ли я издеваться над методом B? Или я могу разрешить методу A вызывать метод B, поскольку там есть только деловые логи c без подключения к базе данных или httprequests?

    public Response InsertAsset(UpdateRequest apiRequest, String token) throws IOException, InterruptedException
{   
    /* TODO
     * Change hard-coded URL implementation
     */
    String url = "http://test:8080/update";

    User user = userRepository.findByToken(token);

    UpdateRequestRequest = new UpdateRequest();

    generateRequestAPI(Request, user);

    Request.setAsset(apiRequest.getAsset());
    Request.setKey(generateCombinedKey(Request, user));

    // Will throw NullPointerException in case HTTP body cannot be generated
    HttpRequest httpRequest = generateHttpPostRequest(url, Request, token);

    HttpResponse<String> httpResponse = httpClient.send(httpRequest, HttpResponse.BodyHandlers.ofString());

    return objectMapper.readValue(httpResponse.body(), Response.class);
}

1 Ответ

0 голосов
/ 03 февраля 2020
Edited because I had gotten the question wrong at first.

Краткий ответ: вы, вероятно, просто используете generateHttpPostRequest().

Более длинный ответ ...

Оригинальный ответ:

Без знания вашего кода ответ невозможен. Макеты для юнит-тестов. В модульном тесте у вас есть тестируемая система (SUT) и внешние зависимости . Для модульного теста вы хотите избавиться от всего поведения в зависимостях и вместо этого полностью контролировать то, что вы увидите в ходе теста. Также модульные тесты должны быть легко читаемыми, поэтому сложные конфигурации - это нет.

Некоторые подсказки для вашего решения:

  1. Никогда mock the SUT!
  2. Если у зависимости нет поведения, и вы легко можете определить, в каком состоянии она будет отображать вашу SUT, вам, возможно, не нужно ее высмеивать.
  3. Настройка макета для возврата макета может понадобиться иногда, но, как правило, следует избегать, если это возможно.
...