首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Citrus Simulator | Extract Payload

Citrus Simulator | Extract Payload
EN

Stack Overflow用户
提问于 2020-06-21 21:34:50
回答 1查看 147关注 0票数 0

我正在尝试应用基于Xpath场景的条件,但不幸的是无法做出决定,因为我无法获取请求有效负载。

代码语言:javascript
复制
RQ1- 
<HotelOperation>
 <Head Function="Search">
 </Head>
 <Form>
   <Search PropertyCode="Hotel1">
     ...
   </Search>
 </Form>
</HotelOperation>

RQ2- 
<HotelOperation>
 <Head Function="Rate">
 </Head>
 <Form>
   <RateSearch PropertyCode="Hotel1">
     ...
   </RateSearch>
 </Form>
</HotelOperation>

RQ3- 
<HotelOperation>
 <Head Function="Book">
 </Head>
 <Form>
   <Book PropertyCode="Hotel1">
     ...
   </Book>
 </Form>
</HotelOperation>


RQ4 -
<HotelOperation>
 <Head Function="Cancel">
 </Head>
 <Form>
   <Cancel PropertyCode="Hotel1">
     ...
   </Cancel>
 </Form>
</HotelOperation>

我想为每个请求检索PropertyCode的XPath值,这样就会有更多的Xpath。

代码语言:javascript
复制
//HotelOperation/Form/Search/@PropertyCode
//HotelOperation/Form/RateSearch/@PropertyCode
//HotelOperation/Form/Book/@PropertyCode
//HotelOperation/Form/Cancel/@PropertyCode

我只创建了一个模拟器,并希望为每个请求提供响应。对于每个请求,响应将是不同的,我还需要从请求中获取值并填充到响应中。

代码语言:javascript
复制
package com.dhisco.learnings.simulator.scenario;

import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.xml.HasXPath.hasXPath;

import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.consol.citrus.context.TestContext;
import com.consol.citrus.endpoint.adapter.mapping.XPathPayloadMappingKeyExtractor;
import com.consol.citrus.message.Message;
import com.consol.citrus.simulator.scenario.AbstractSimulatorScenario;
import com.consol.citrus.simulator.scenario.Scenario;
import com.consol.citrus.simulator.scenario.ScenarioDesigner;
import com.consol.citrus.simulator.scenario.ScenarioRunner;
import com.dhisco.learnings.simulator.variables.UDOperations;

@Scenario("HotelOperationScenario")
@RequestMapping(value = "/services/rest/simulator/hoteloperation", method = RequestMethod.POST)
public class CtripUltraDirectScenario extends AbstractSimulatorScenario {

    @Override
    public void run(ScenarioRunner scenario) {
    }

    @Override
    public void run(ScenarioDesigner scenario) {
        scenario.correlation().start().withHandler(this);

        scenario.http().receive().post().
                .extractFromPayload("//HotelOperation/Form/Search/@PropertyCode", "propCode")
                .extractFromPayload("//HotelOperation/Head/@Function", "operation");

        scenario.conditional().when("${operation}", equalTo("Search"))                .actions(scenario.http().send().response(HttpStatus.OK).contentType(MediaType.APPLICATION_XML_VALUE)
                        .payload("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
                        + "<HotelOperation>"
                        + "<Property Code=\"${propCode}\">"
                        + "</Property>" + "</HotelOperation>"));
        scenario.conditional().when("${operation}", equalTo("RateSearch"))              .actions(scenario.http().send().response(HttpStatus.OK).contentType(MediaType.APPLICATION_XML_VALUE)
                        .payload("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
                        + "<HotelOperation>"
                        + "<Rate Code=\"${propCode}\">"
                        + "</Rate>" + "</HotelOperation>"));

    }

    @Override
    public boolean isHandlerFor(Message message, TestContext context) {
        return new XPathPayloadMappingKeyExtractor().getMappingKey(message).equals("HotelOperation");
    }
}

是否有可能从模拟器场景中获取请求有效负载,或者是否有方法为每个操作(搜索、费率、预订、取消)应用条件XPath。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-30 22:28:55

代码语言:javascript
复制
public void run(ScenarioRunner scenario) {
 DefaultMessageStore messageStore = (DefaultMessageStore) 
 scenario.getTestContext().getMessageStore();
 String rqXML = (String) messageStore.getMessage("receive(<scenario name>)").getPayload();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62499297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档