Как выполнить модульное тестирование обработчика в vert.x Java? - PullRequest
1 голос
/ 10 июня 2019

У меня есть метод, который выполняет вызов к внешней конечной точке, используя io.vertx.ext.web.client.WebClient.Я не могу проверить метод обработчика этого.Это метод, который необходимо протестировать:

public void freshdeskPostRequest(CompletableFuture<ResponseObject> completableFuture, String url, JsonObject jsonObject, String action) {
        webClient.postAbs(url)
                .putHeader("Content-type", "application/json")
                .putHeader(Constants.AUTHORIZATION, freshdeskAuthHandler)
                .timeout(fresdeskTimeout)
                .sendJsonObject(jsonObject, httpResponseAsyncResult -> {
                    getFreshdeskResponse(completableFuture, action, httpResponseAsyncResult);
                });
    }

Метод в нем getFreshdeskResponse необходимо протестировать, имитируя вызов url.Но метод вызывается в обработчике, поэтому я не уверен, как смоделировать вызов и выполнить обработчик.Я проверил несколько ответов на форуме, а также просмотрел документы, но ни один из них не помог.Пожалуйста помоги.Я использую Junit, Mockito в качестве фреймворков для тестирования.Пожалуйста, помогите.

1 Ответ

2 голосов
/ 11 июня 2019

Вы можете использовать ArgumentCaptor из библиотеки mockito для захвата лямбда-выражения и запуска лямбда-выражения вручную. Пример:

@Captor
ArgumentCaptor<SomeHandlerType> captor;  // create ArgumentCaptor for handler

SomeHandlerType - это тип обработчика. Затем вызовите sendJsonObject () с captor.capture () следующим образом -

mockedRequest.sendJsonObject(captor.capture()); // capture the argument
SomeHandlerType handler = captor.getValue(); // get the handler lambda
handler.handle(dummyResponse);  // trigger the handler manually
...