Testing 在JMS队列中发送自定义对象的本机方式?(柑橘模拟器)

Testing 在JMS队列中发送自定义对象的本机方式?(柑橘模拟器),testing,integration-testing,citrus-framework,Testing,Integration Testing,Citrus Framework,我正在寻找一种本机(就框架而言是正确的)方式,在柑橘模拟器中向JMS发送第三方(自定义)对象? 我试过: scenario .send() .payloadModel(myObject); 但在JMS队列中,myObject显示为com.consol.citrus.message.DefaultMessage,而不是com…myObject 示例: 场景-接收http POST请求(作为触发器)并将其JMS对象发送到消息队列 配置 ... .useObjectMessages(true) .

我正在寻找一种本机(就框架而言是正确的)方式,在柑橘模拟器中向JMS发送第三方(自定义)对象? 我试过:

scenario
.send()
.payloadModel(myObject); 
但在JMS队列中,myObject显示为com.consol.citrus.message.DefaultMessage,而不是com…myObject

示例: 场景-接收http POST请求(作为触发器)并将其JMS对象发送到消息队列

配置

...
.useObjectMessages(true)
...
场景

  ...
    import com.temafon.data.MORequest;

    @Scenario("morequest")
    @RequestMapping(value = "/simulator/morequest",method = RequestMethod.POST)

    public class JmsMoRequestScenario extends AbstractSimulatorScenario {

    @Override
    public void run(ScenarioDesigner scenario) {
       MORequest request = new MORequest(12345678901L, "USSD", "1172", "ON", 
       11L);
            request.setSourcePort(3);

        scenario
                .receive()
                .payload("getmorequest");

        scenario
                .send("jms.queue.destination")
                .payloadModel(request);
在这种情况下,我希望进入jms.queue.destination,类似于屏幕1

另外,我已经使用JavaActionBuilder和jmsTemplate.send实现了变通方法,并添加了其他类和

scenario
.java(//Object).method(//instance");

但是,在citrus Java DSL中设置
payloadModel()
总是会导致对象的某种编组表示,这不是您想要的。使用
.useObjectMessages(true)
都不适用于您,因为这会导致整个Citrus message对象用作消息负载

您需要定义一个完整的Citrus消息对象,它在JMS目的地的有效负载创建方面保持不变。然后,Citrus会自动使用带有适当对象负载的JMS对象消息

MORequest request = new MORequest(12345678901L, "USSD", "1172", "ON", 11L);
request.setSourcePort(3);

scenario
    .receive()
    .payload("getmorequest");

scenario
    .send("jms.queue.destination")
    .message(new JmsMessage(request));
请注意,我使用的是
.message()
fluent API,而不是
payloadModel()
API。消息API接收柑橘类消息对象,如
com.consol.Citrus.jms.message.JmsMessage
com.consol.Citrus.message.DefaultMessage

您的自定义域模型对象
请求
被用作构造函数arg,并将作为对象负载生成JMS消息。当然
MORequest
必须是
java.io.Serializable