Тестовые примеры Junit для остальных API-вызовов с лямбда-функциями - PullRequest
0 голосов
/ 07 ноября 2019

Рассмотрим метод вызова rest api, который внутренне использует лямбда-функции, как мы пишем тестовые случаи junit. Я попробовал себя, но не смог издеваться над URI Builder, который выражается как лямбда-функция в вызове post api. Также как смоделировать блок внутри flatMap. Ниже приведен фрагмент кода, для которого я пытаюсь написать модульный тест.

public ResponseEntity<String> findEmployee(String empName, String empId) {

        response = employeeService.post.uri(builder -> builder.path(pathMapper.get("GET_PATH")).queryParam(EMP_ID, empId).build())
            .accept(APPLICATION.JSON)
            .syncBody(empName)
            .exchange()
            .flatMap( empResponse -> {
                LOGGER.info(empResponse.getStatusCode());
                return empResponse.toEntity(String.class);
            }).block();

            return response;
    }

Где employeeService - это объект Webclient. Любая помощь будет оценена.

1 Ответ

0 голосов
/ 07 ноября 2019

Друзья не позволяют друзьям высмеивать API-интерфейсы Fluent.

Лямбда встроена, поэтому не может быть индивидуально протестирован. Если вам это нужно, вы должны извлечь его из вызова метода, который может быть протестирован.

  .flatMap( this::handleResponse )
  .block();
...
String handleResponse( Response empResponse ) {
  LOGGER.info(empResponse.getStatusCode());
  return empResponse.toEntity(String.class);
}

В более общем случае вы можете захотеть взглянуть на что-то вроде Wiremock который устанавливает локальный веб-сервер, который вы можете запустить с помощью заданных тестовых ответов.

...