2017-12-14 20 views
0

jsonPath(または他のマッチャー)を使用しているときにチェックを実行できません。一致条件がsseで動作しない

messageを使用している場合、私はセッションで

.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}"} 

しかし、使用してメッセージ全体を印刷することができるよ全体をJSONメッセージを保存することができますよpathJson matcher、私のチェックタイムアウト

.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%) 

答えて

0

を生成します。

問題は、JSON内でJSONをエスケープしていないことでした。

あなたがいくつかのデータトラフを送信する場合、クライアントはデータとイベントの両方のタイプを受信します。そしてGatlingはそれをJson Objectとして提供します。適切な

{"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}\"} 

か、むしろあなたが送ったデータでもある場合は、JSONガトリングはただ、不適切なJSON

Actuallを作成し、そのままのように単純な文字列、それを渡しますJsonにmessageを保存するよりも、オブジェクトとして保持することができます。

case class Message(event: String, data: String) 
関連する問題