Каратэ-фреймворк — есть файл функций, который вызывает сторонний 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());
}
}