How to mock this webClient using JUnit?

Souvik :

I'm trying to mock the following method:

public Mono<PResponse> pay(final String oId,final Double amount) {

    return webClient
        .put()
        .uri("/order/{oId}/amount/{amount}",oId,amount)
        .body(BodyInserts
        .fromObject(PRequest))
        .exchange()
        .flatMap(
            response -> {
                if(response.statusCode().is4xxClientError()) {
                    // call error Function
                } else {
                    return response
                       .bodyToMono(PResponse.class)
                       .flatMap(pResponse -> {
                           return Mono.just(pResposne)
                        });
                }

            }
        );    
}

For your information, webClient is a private Instance.

cemthecebi :

You can use MockWebServer.Here is an example, using code from this blog post:

Service

class ApiCaller {
    private WebClient webClient;

    ApiCaller(WebClient webClient) {
         this.webClient = webClient;
    }

    Mono<SimpleResponseDto> callApi() {
         return webClient.put()
             .uri("/api/resource")
             .contentType(MediaType.APPLICATION_JSON)
             .header("Authorization", "customAuth")
             .syncBody(new SimpleRequestDto())
             .retrieve()
             .bodyToMono(SimpleResponseDto.class);
    }
}

Test

class ApiCallerTest {

    private final MockWebServer mockWebServer = new MockWebServer();
    private final ApiCaller apiCaller = new ApiCaller(WebClient.create(mockWebServer.url("/").toString()));

    @AfterEach
    void tearDown() throws IOException {
        mockWebServer.shutdown();
    }

    @Test
    void call() throws InterruptedException {
        mockWebServer.enqueue(
            new MockResponse()
               .setResponseCode(200)
               .setHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE)
               .setBody("{\"y\": \"value for y\", \"z\": 789}")
        );
        SimpleResponseDto response = apiCaller.callApi().block();
        assertThat(response, is(not(nullValue())));
        assertThat(response.getY(), is("value for y"));
        assertThat(response.getZ(), is(789));

        RecordedRequest recordedRequest = mockWebServer.takeRequest();
        //use method provided by MockWebServer to assert the request header
        recordedRequest.getHeader("Authorization").equals("customAuth");
        DocumentContext context = JsonPath.parse(recordedRequest.getBody().inputStream());
        //use JsonPath library to assert the request body
        assertThat(context, isJson(allOf(
            withJsonPath("$.a", is("value1")),
            withJsonPath("$.b", is(123))
        )));
    }
}

Эта статья взята из Интернета, укажите источник при перепечатке.

Если есть какие-либо нарушения, пожалуйста, свяжитесь с[email protected] Удалить.

Отредактировано в
0

я говорю два предложения

0обзор
Войти в системуУчаствуйте в комментариях

Статьи по теме

Ответы Junit Mock не возвращаются в случае зацикливания

Junit how to mock method return in test method?

How to mock Context using Mockito?

Junit Mockito NullPointerException для Mock для автоматического подключения на основе конструктора

Тестирование с использованием Junit и Mock put request

Есть ли способ Mock частного вызова метода внутри другого метода в Junit5

Область применения @Mock в Junit 4 в методах @Produces

@Mock зависимости @Autowired вызывает случайные сбои тестов junit

How to get a json field by name using Spring WebClient?

WebClient вызывает "java.lang.IllegalStateException: исполнитель не принимает задачу" в JUnit

How to mock android context using mockk library

Как внедрить из контекста приложения в mock в Junit5 Mockito?

Junit Mockito Mock SessionFactory в тестовый класс DAO

@Mock MessageSource всегда возвращает null для getMessage в тесте Junit

Using Cookie aware WebClient

How to run Categorized Junit tests using Gradle?

How to test DaoImpl methods using Junit and Mockito

How to order tests using junit 5

how to mock an instance method invocation from static method while writing junit for static method?

Scatter & Gather using Spring Webclient

Mock Apache Camel out location в тестировании JUnit

How to mock a object which created using new method

How to mock a function within Scala object using Mockito?

How to mock a property of a service (as opposed to a function/method) using Jest

how to mock DynamoDB mapper transactionwrite() method using Mockito?

How to HTTP POST a Flux<String> as a JSON array using Spring's WebClient?

How i return Empty mono if the request doesn't return error using webClient

Добавить параметр запроса в запрос WebClient

Как использовать WebClient для выполнения синхронного запроса?

TOP список

  1. 1

    Распределение Рэлея Curve_fit на Python

  2. 2

    Merging legends in plotly subplot

  3. 3

    Как я могу нарисовать заполненный прямоугольник в JFreeChart?

  4. 4

    Проблема с window.print в Safari

  5. 5

    Перебирайте несколько столбцов в фрейме данных Panda и находите уникальные значения подсчета

  6. 6

    JetBrains Rider enable-migrations для ASP.NET MVC на Mac

  7. 7

    migrate MongoDB container service - mongodump command not found

  8. 8

    Как создать переменную с использованием класса Color, который включает только выбранные цвета?

  9. 9

    Ошибка XDG0062: не удалось установить «Контент». в режиме навигации MUXC

  10. 10

    Как загрузить ZIP-файл в Nexus с помощью Maven и избежать создания артефакта pom в Nexus?

  11. 11

    QString удалить последние символы

  12. 12

    Symfony 4, Postgres - `Неверное значение параметра client_encoding:« utf8mb4 »` при выполнении команды doctrine

  13. 13

    HTML Body говорит cz-shortcut-listen = "true" с инструментами разработчика Chrome?

  14. 14

    В типе Observable <unknown> отсутствуют следующие свойства из типа Promise <any>.

  15. 15

    Как создать простую анимацию в Xamarin с помощью SkiaSharp

  16. 16

    Установка pip с использованием Python 2.7, установленного в ArcGIS

  17. 17

    Qt - не растягивать виджеты в QVBoxLayout

  18. 18

    How to convert C++/CLI string to const char*

  19. 19

    sbt: Как разрешить зависимости Maven, использующие свойства Maven

  20. 20

    Flutter: Unhandled Exception: FileSystemException: Creation failed, path = 'Directory: '' (OS Error: Read-only file system, errno = 30)

  21. 21

    Как добавить Swagger в веб-API с поддержкой OData, работающий на ASP.NET Core 3.1

популярныйтег

файл