首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >匹配条件不适用于sse

匹配条件不适用于sse
EN

Stack Overflow用户
提问于 2017-12-14 11:17:43
回答 1查看 209关注 0票数 0

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

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

代码语言:javascript
复制
  .check(wsAwait
    .within(6 seconds)
    .until(1)
    .message.exists
    //.jsonpJsonPath("$.data").exists
    .saveAs("CID"))

在接下来的场景中,我可以打印整个消息

代码语言:javascript
复制
{"event":"ConversationCreated",
  "data":"{"conversationId":"0e21f93d-6b0c-441f-a01d-8b0aa4e14769",
           "customerInfo":null,"deviceInfo":null}"}

但是当使用pathJson matcher时,我的支票超时

代码语言:javascript
复制
  .check(wsAwait
    .within(6 seconds)
    .until(1)
    // .message.exists
    .jsonpJsonPath("$.data").exists
    .saveAs("CID"))

运行时会产生

代码语言:javascript
复制
...
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%)
EN

回答 1

Stack Overflow用户

发布于 2017-12-22 09:11:32

我设法让它“发挥作用”。

问题是在JSON中缺少托管JSON。

当您通过sse发送一些数据时,您的客户端将同时接收数据和事件类型。而Gatling将其作为Json对象提供。如果您发送的数据也是Json Gatling,那么Json Gatling将把它作为简单的字符串传递,而不进行任何修改,这会造成不正确的Json。

实际上:

代码语言:javascript
复制
{"event":"ConversationCreated",
  "data":"{"conversationId":"0e21f93d-6b0c-441f-a01d-8b0aa4e19",
           "customerInfo":null,"deviceInfo":null}"}

适当的:

代码语言:javascript
复制
{"event":"ConversationCreated",
  "data":"{\"conversationI\d":\"0e21f93d-6b0c-441f-a01d-8b0aa4e19\",
           \"customerInfo\":null,\"deviceInfo\":null}\"}

或者,与其将message保存在Json中,不如将其保留为对象:

代码语言:javascript
复制
case class Message(event: String, data: String)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47812036

复制
相关文章

相似问题

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