Как получить доступ к переменной, объявленной на мок-сервере каратэ, или записать запросы, полученные на мок-сервере, и каким-то образом отправить их в основной файл функций

У меня есть основной файл функций, который вызывает макет и вызывает API. Этот основной API будет вызывать другой API в фоновом режиме, который переходит на мой фиктивный сервер карате. Я также могу проверить входящий запрос и отправить ответ. В этом входящем запросе на макет я получаю transactionRef, который затем появляется в ответе моего основного API.

Поток примерно такой

API1 Request 
     API2 Request (transactionRef) -> API2 Response 
API1 Response (transactionRef)

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

Feature:  stateful mock server

Background: Mock

Scenario: pathMatches('/abcd') && bodyPath('/Envelope/Body/infoRequest')!= null
    
    * match karate.typeOf(request) == 'xml'
      
    * xml respInfo = read('classpath:org/xbspro/hos/payloads/infoResponse.xml')
    * def tranRef = $request/Envelope/Body/infoRequest/transactionId

    * set respInfo/Envelope/Body/infoResponse/transactionId= tranRef 
 
    * def response = respInfo

Выше моя фиктивная функция. Ниже моя главная особенность

    * call read('classpath:Abstract.feature')
    * xml remResp = response
    
    * match remResponse //transactionId == tranRef 
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
108
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

У вас есть 2 варианта.

  1. Вы уже знаете, как зафиксировать состояние макета с помощью глобальных переменных. Просто добавьте пользовательскую конечную точку, которую вы можете вызвать из своего теста API, чтобы получить ее. Обратитесь: https://stackoverflow.com/a/63512034/143475

  2. Обратитесь к этому примеру, где вы можете использовать Java для «подключения» макета и теста: https://twitter.com/getkarate/status/1417023536082812935

Спасибо, это решение определенно сработает для меня. Но я предполагаю, что во время параллельного выполнения он может перепутаться. Эта ветка безопасна?

shrik18 29.11.2022 10:23

@ shrik18 да, это так

Peter Thomas 29.11.2022 14:10

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