Каратэ-фреймворк — есть файл функций, который вызывает сторонний API. Если API не работает, мне нужно имитировать ответ. Чтоб мои испытания прошли

Пробую mockservice, используя mock-сервер в карате.

Мой Moto: у меня есть файл функций, который вызывает сторонний API. Если API не работает, мне нужно имитировать ответ. Чтоб мои испытания прошли..

Что я сделал: я создал файл функций, который вызывает сторонний API (не локальный API). Я вызываю этот файл функции из файла Java. В том же java-файле написан код для имитации ответа.

Как я запускаю код: Запуск java-файла как Junit

Пробовал некоторые способы, но не работает. Буду признателен за любое руководство.

callApi.feature :

      Feature: To test GET by mock service

  Scenario: To test GET by mock service
    Given url 'https://abcdefg.in/api/users/1'  # ----> Fake api url to work like api is down
    When method get
    Then status 200
    * print response

SimpleMockServerTest.java --> Это файл, который вызывает файл функций и отвечает за имитацию ответа.

      package test.java.file;

import static org.mockserver.integration.ClientAndServer.startClientAndServer;
import static org.mockserver.model.HttpRequest.request;
import static org.mockserver.model.HttpResponse.response;

import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.mockserver.client.MockServerClient;
import org.mockserver.integration.ClientAndServer;
import org.mockserver.mock.Expectation;
import org.mockserver.model.Parameter;

import com.intuit.karate.Results;
import com.intuit.karate.Runner.Builder;

public class SimpleMockServerTest {

    private static ClientAndServer mockServer;

    @BeforeAll
    public static void startMockServer() {
        mockServer = startClientAndServer(9092);
        String body = "{\r\n" + "\"id\": 7,\r\n" + "\"email\": \"michael.lawson@reqres.in\",\r\n"
                + "\"first_name\": \"Michael\",\r\n" + "\"last_name\": \"Lawson\",\r\n"
                + "\"avatar\": \"https://reqres.in/img/faces/7-image.jpg\"\r\n" + "}";
        
        Expectation[] expectations = new MockServerClient("localhost", mockServer.getLocalPort())
                .when(request("/api/users/{userId}")
                        .withPathParameter(Parameter.param("userId", "1"))
                )
                .respond(
                        response()
                                .withBody(body)
                );
        System.out.println(expectations);
    }

    @AfterAll
    public static void stopMockServer() {
       mockServer.stop();
    }   

    @Test
    public void simpleTest() {

        Builder aBuilder = new Builder();
        aBuilder.path("classpath:test/java/file/callApi.feature");
        Results result = aBuilder.parallel(1);
        Assertions.assertEquals(0, result.getFailCount());
    }

}

0 ответов

Другие вопросы по тегам