В Каратэ API насмешка не работает, как ожидалось для меня - PullRequest
1 голос
/ 24 апреля 2020

Я изучаю двойной API Каратэ (насмешливый) для интеграционного теста. Для приведенного ниже сценария ios я не получаю ожидаемого насмешливого ответа. Будем благодарны за вашу помощь.

Мои настройки: 1. Сервер каратэ-макета работает с правилами pathMatches на порту 8001 : http://localhost: 8001 (работает, проверено на соответствие "/ cat" и некоторым тестовым вызовам) 2. Мое собственное приложение работает с docker на порту 8080 . С Docker выставлен также порт 8001.

Случай с издевательствами: 1. Мой вызов приложения REST , доступный для всех пользователей http://localhost: 8080 / service / v1 / findUser . Этот открытый API, лежащий в основе , вызывающий другой REST вызов http://dev-STG/userservice/v1/findUser, который фактически дает JSON ответ. Итак, я хочу смоделировать базовый вызов API и соответствующим образом проверить его поведение API.

Выполнены шаги: 1. Теперь в конфигурации моего приложения я заменил фактический базовый вызов API на макет сервера Карате. (http://localhost: 8001 / UserService / v1 / findUser ). Затем собрал и запустил мое приложение docker.

В карате я определил тест, например "testIntgrtn.feature", который вызывает API моего приложения"http://localhost: 8080 / service / v1 / findUser " и сервер каратэ и установите с помощью pathmatch "/userservice/v1/findUser". После выполнения каратэ" testIntgrtn.feature ", не имитирующего базовый вызов (http://localhost: 8001 / userservice / v1 / findUser ).

Теперь в файле "testIntgrtn.feature" я изменил URL-адрес моего приложения на базовый URL-адрес REST, т. Е. (http://localhost: 8001 / userservice / v1 / findUser ) тогда издевательство будет работать как шарм.

Я не понимаю, почему базовый вызов API здесь не высмеивают? Я что-то здесь упустил? Кроме того, в каратэ мы можем отслеживать все REST-звонки (например, кипарис).

Спасибо за этот замечательный фреймворк. Что является интуитивно понятным для написания дел автоматизации.

1 Ответ

0 голосов
/ 24 апреля 2020

Карате не может автоматически перехватывать вызовы.

Рекомендуемый подход заключается в том, что при загрузке приложения, работающего на localhost:8080, вы изменяете конфигурацию так, чтобы вместо вызова http://dev-stg/userservice/v1/findUser оно вызывало что-то вроде http://localhost:8001/v1/findUser. Это то, что делают большинство команд, и это легко, потому что вы все равно должны определить внешние URL-адреса как application.properties (или эквивалентный) в качестве передового опыта.

Очень просто перезаписать приложение свойство Spring Boot, например, вы можете сделать это через командную строку: { ссылка }

Если вы хотите, вы можете динамически подготовить порт для макета. Таким образом, ваш модульный тест может сначала запустить макет, получить порт, а затем запустить сервер. Вы можете найти подробности в документации по каратэ.

Все это говорит о том, что если вы сможете изменить (системный) HTTP-прокси до запуска приложения в localhost:8080, вы можете сделать это без изменения конфигурации. (Но это сложно, поэтому я рекомендую подход, объясненный выше.) Таким образом, в этом случае каратэ может фактически «перехватывать» исходящие HTTP-вызовы, которые делает приложение в localhost:8080.

См. Второй-последний строка (5a) в таблице здесь: https://github.com/intuit/karate/tree/master/karate-netty#consumer -provider-example

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...