匹配条件不适用于sse

问题描述 投票:0回答:1

使用jsonPath(或任何其他匹配器)时,我无法执行检查。

当使用message时,我能够在会话中保存整个JSON消息

  .check(wsAwait
    .within(6 seconds)
    .until(1)
    .message.exists
    //.jsonpJsonPath("$.data").exists
    .saveAs("CID"))

后来在场景中我能够打印整个消息

{"event":"ConversationCreated",
  "data":"{"conversationId":"0e21f93d-6b0c-441f-a01d-8b0aa4e14769",
           "customerInfo":null,"deviceInfo":null}"}

但是当使用pathJson匹配器时,我的检查超时了

  .check(wsAwait
    .within(6 seconds)
    .until(1)
    // .message.exists
    .jsonpJsonPath("$.data").exists
    .saveAs("CID"))

运行时会产生

...
12:09:32.248 [ERROR] i.g.c.a.b.SessionHookBuilder$$anon$1 - 'hook-2' crashed with 'java.util.NoSuchElementException: key not found: CID', forwarding to the next one
...

---- Errors --------------------------------------------------------------------
> Check failed: Timeout                                               1 (100,0%)
scala server-sent-events gatling
1个回答
0
投票

我设法让它“工作”。

问题是缺少JSON中的JSON。

当您通过sse发送一些数据时,您的客户端将同时接收数据和事件类型。 Gatling将它作为Json Object提供。如果您发送的数据也是Json Gatling将只是简单的字符串传递它,没有任何修改,这会产生不正确的Json

实际工作:

{"event":"ConversationCreated",
  "data":"{"conversationId":"0e21f93d-6b0c-441f-a01d-8b0aa4e19",
           "customerInfo":null,"deviceInfo":null}"}

正确:

{"event":"ConversationCreated",
  "data":"{\"conversationI\d":\"0e21f93d-6b0c-441f-a01d-8b0aa4e19\",
           \"customerInfo\":null,\"deviceInfo\":null}\"}

或者,而不是将message保留在Json中,它可以保留为对象:

case class Message(event: String, data: String)
© www.soinside.com 2019 - 2024. All rights reserved.