Как написать тесты на HTTP-клиент Apache? - PullRequest
0 голосов
/ 22 февраля 2019

Я пытаюсь написать тест для своего сервиса, который устанавливает соединение с другим сервисом, который возвращает мне элементы из базы данных.Моя проблема в том, что я устанавливаю свойства соединения в тесте и запускаю сервис.Как это может быть имитацией или чем-то похожим?

Мой метод запуска службы:

public void doStartService() {
        super.doStartService();
        PoolingHttpClientConnectionManager manager = new PoolingHttpClientConnectionManager();
        manager.setDefaultMaxPerRoute(maxConnectionsPerRoute);
        manager.setMaxTotal(maxConnections);

        RequestConfig requestConfig = RequestConfig.custom()
                .setConnectTimeout(connectTimeout)
                .setSocketTimeout(socketTimeout)
                .setRedirectsEnabled(false).build();

        HttpClientBuilder builder = HttpClientBuilder.create();
        builder.setDefaultRequestConfig(requestConfig);
        builder.setConnectionManager(manager);
        client = builder.build();
    }

Мой метод проверки установки и один метод проверки:

private ProductCatalogIntegrationService service;

 @Before
    public void setup() {
        service = new Service();
        service.setConnectTimeout(10000);
        service.setSocketTimeout(10000);
        service.setMaxConnections(10);
        service.setMaxConnectionsPerRoute(10);
        service.setUrl("http://localhost:8888/products");
        service.doStartService();
    }


    @Test
    public void testReturnProductById() {
        service.setProductById(GET_PRODUCT_BY_ID); // set url from get product by id, by this url my other service goes to the database
        jsonItem = service.getProductById("1"); //get product by id 1

        assertEquals(jsonItem.getId(), FIRST_PRODUCT_ID); // I compare the id on which I made the request to the database, so that I came and was wrapped in a class wrapper
    }

Как это сделатьэто правильно, чтобы не настраивать соединение в тестах?

1 Ответ

0 голосов
/ 22 февраля 2019

Javalin был бы отличным инструментом для насмешки над реальным сервисом, поскольку он допускает утверждения о состоянии в ваших тестах.

Wiremock также может быть использован.Но это ведет к тому, что сложно проводить поведенческие тесты (проверять).

...